Mod_rewrite - удалить знак вопроса, а не только строку запроса - PullRequest
0 голосов
/ 24 ноября 2011

Мне нужно перенаправить URL-адрес, такой как mydomain.com/index.php, на mydomain.com/

Это звучит просто, но программная среда также использует URL-адреса, такие как mydomain.com/index.php?Эти URL-адреса (с одним добавленным вопросительным знаком) не должны перенаправляться на mydomain.com.

Проблема не может быть решена с помощью

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ /? [L,R=301]

, поскольку это заменяет / ищет полные строки запросанапример, foo = bar, но ни одного знака вопроса.

Как мне перенаправить ТОЛЬКО index.php?Я надеюсь, что Сомоне поможет мне, так как я новичок с mod_rewrite и регулярными выражениями.

1 Ответ

0 голосов
/ 25 ноября 2011

Вам просто нужно это:

RewriteRule ^index\.php$ ^$ [R=301,QSA,L]

Примечание: это для этого случая: пользователь в браузере набирает mydomain.com/index.php и прозрачно перенаправляется на mydomain.com/ (и это видно в браузере).

Если вы хотели обратного, это должно сработать:

RewriteRule ^$ /index\.php [R=301,QSA,L]

Это также сделает перенаправление (и в браузере URL изменится с mydomain.com/index.php на mydomain.com/.

Пожалуйста, скажите мне, если это работает.

[обновление]

Если вам не нужны URL-адреса, такие как /index.php?, и URL-адреса, содержащие строку запроса, вам просто нужно:

# if QUERY_STRING is empty...
RewriteCond %{QUERY_STRING} ^$
# ... then try to apply the rule
RewriteRule ^index\.php$ ^$ [R=301,QSA,L]
...