301 редирект для динамического URL [дубликат]

Я работал над 301 редиректом для динамического URL последние пару дней и действительно боролся.

Я хочу перенаправить example.com/?feed=podcast на example.com/feed/podcast

Вот мой текущий файл .htaccess:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^feed$ "http\:\/\/example\.com\/feed\/podcast" [R=301,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Я пытаюсь чтобы добавить перенаправление для динамического URL. Мне удалось заставить это работать:

RewriteCond %{QUERY_STRING} ^pizza$
RewriteRule ^$ http://www.example.com/feed/podcast? [R=301,L]

Но я не могу заставить это работать:

RewriteCond %{QUERY_STRING} ^feed=podcast$
RewriteRule ^$ http://www.example.com/feed/podcast? [R=301,L]

Это заканчивается перенаправлением обратно на example.com

Любая помощь будет очень признательна!

0
задан 28 August 2015 в 00:23
1 ответ

Это работает для меня:

Options All -Indexes

ErrorDocument 403 /Forbidden

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteCond %{QUERY_STRING} ^feed=podcast$
RewriteRule ^$ http://www.example.com/feed/podcast? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Сначала я подумал, что вам нужно экранировать знак равенства ("=") с помощью обратной косой черты (что действительно сработало, но, как показано выше, также работает перенаправление.

C:\Apache24\htdocs>curl -s --verbose http://localhost/?feed=podcast -o null
* Hostname was NOT found in DNS cache
*   Trying ::1...
* Connected to localhost (::1) port 80 (#0)
> GET /?feed=podcast HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Thu, 27 Aug 2015 21:43:43 GMT
* Server Apache/2.4.10 (Win64) PHP/5.6.4 is not blacklisted
< Server: Apache/2.4.10 (Win64) PHP/5.6.4
< Location: http://www.example.com/feed/podcast
< Content-Length: 243
< Content-Type: text/html; charset=iso-8859-1
<
{ [data not shown]
* Connection #0 to host localhost left intact
0
ответ дан 5 December 2019 в 12:10

Теги

Похожие вопросы