Решение проблемы косой черты для заданной настройки - PullRequest
0 голосов
/ 28 августа 2009

Учитывая следующие правила, как я могу переписать их, чтобы иметь косую черту? Я должен упомянуть, что я могу редактировать только файл .htaccess, поэтому у меня нет доступа для изменения URL-адресов на веб-сайте.

RewriteRule ^artists/(.*)-p(.*)$ /artists.php?l=$1&p=$2 [QSA,L]
RewriteRule ^artists/(.*)$ /artists.php?l=$1 [QSA,L]
RewriteRule ^lyrics/(.*)/(.*)$ /artists-albums.php?a=$1&b=$2 [QSA,L]
RewriteRule ^lyrics/(.*)$ /artists-details.php?a=$1 [QSA,L]
RewriteRule ^p-(.*)-(.*)$ /index.php?p=$1&q=$2 [QSA,L]

Итак, если кто-то ищет /lyrics/abba, он должен автоматически перенаправить на /lyrics/abba/.

Ответы [ 2 ]

0 голосов
/ 28 августа 2009

Попробуйте это правило перед другими вашими правилами:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $0 !.*\.php$
RewriteRule .*[^/]$ /$0/ [L,R=301]

Но вы также должны изменить существующие правила, заменив .* как минимум .+ или лучше [^/]+:

RewriteRule ^artists/([^/-]+)-p([^/]+)$ /artists.php?l=$1&p=$2 [QSA,L]
RewriteRule ^artists/([^/]+)$ /artists.php?l=$1 [QSA,L]
RewriteRule ^lyrics/([^/]+)/([^/]+)$ /artists-albums.php?a=$1&b=$2 [QSA,L]
RewriteRule ^lyrics/([^/]+)$ /artists-details.php?a=$1 [QSA,L]
RewriteRule ^p-([^/-]+)-([^/]+)$ /index.php?p=$1&q=$2 [QSA,L]

Если возможно, вам следует использовать еще более конкретный шаблон ([0-9]+ для чисел, [1-9][0-9]* для чисел без 0 и т. Д.).

0 голосов
/ 28 августа 2009

Добавьте другое правило, чтобы переписать вещи, которые не заканчиваются косой чертой, перед другими правилами:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

(Возможно, я использовал точное регулярное выражение для этого, но вы поняли.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...