2015-09-01 3 views
2

Я пытаюсь найти способ, чтобы перенаправить эти URLs:Htaccess каталог Перенаправление строки запроса

http://example.com/some-directory-name/ 
http://example.com/some-directory-name 

к этому URL:

http://example.com?post=some-directory-name

До сих пор я получил это :

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com$ 
RewriteRule ^(.*)$ http://example.com?post=$1 [L,R=302] 

но все это делает перенаправление меня на этот URL и вызвать цикл переадресации:

http://example.com/?post=

Я думал, что [L] тег может вызвать правило не применяется снова? Кроме того, почему он добавляет косую черту перед строкой запроса и отбрасывает часть $ 1?

Любая помощь была бы принята с благодарностью!

+0

«почему он, добавив косую черту» - The _browser_ добавляет косую черту, чтобы сделать URL действительным. _URL-path_ должен быть как минимум '/', а не _empty_. – MrWhite

ответ

2

Вы должны использовать RewriteCond, чтобы остановить перенаправление, когда строка запроса уже есть:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{QUERY_STRING} !(?:^|&)post= [NC] 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.+)$ http://%{HTTP_HOST}?post=$1 [L,R=302,QSA] 
+1

Очень круто. Огромное спасибо. –

Смежные вопросы