Возникла проблема с добавлением mod_rewrite добавляющей косой черты - PullRequest
1 голос
/ 16 ноября 2010

Я использую mod_rewrite, чтобы превратить дружественные URL-адреса (site.com/page/) в дружественные к сценариям (? Page = page). Все это работает отлично, за исключением одной вещи.Если вы пропустите завершающую косую черту в URL-адресе, он сломается и получит 404.

Я попытался использовать решение в этом посте (слегка изменено), но, похоже, оно неза работой.Для справки вот мой .htaccess переписать;

<IfModule mod_rewrite.c>
RewriteEngine On

Options +FollowSymLinks  
Options +Indexes  
RewriteEngine On
RewriteBase /

#force trailing slashes on real directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [R]
RewriteRule ^images - [L]
RewriteRule ^([^/]*)/$ /?page=$1%{QUERY_STRING} [L]

</IfModule>

1 Ответ

2 голосов
/ 16 ноября 2010

Итак, вы хотите выполнить / пропустить тест вашего каталога - как я догадываюсь, - а затем вам нужно изменить:

RewriteRule ^([^/]*)/$ /?page=$1%{QUERY_STRING} [L]

на два из них - в случае с / и без слеша - или только на один

RewriteRule ^([^/]*)/?$ /?page=$1%{QUERY_STRING} [L]

Предполагая, что это то, что вы хотите. Вы, вероятно, хотите это немного больше, как L

RewriteRule ^([^/.]+)/?$ /?page=$1&%{QUERY_STRING} [L]

Я также добавил & - как я полагаю, вам это тоже нужно.

...