Что не так с этим правилом многоуровневой перезаписи каталогов htaccess?

У меня есть некоторые проблемы с моим htaccess...

Я хочу, чтобы мой URL был таким:

http://example.com/artist/
http://example.com/artist/rihanna/
http://example.com/artist/rihanna/biography/
http://example.com/artist/rihanna/video/
http://example.com/artist/rihanna/news/

Проблема заключается во всей работе URL, кроме "http://example.com/artist/"

RewriteRule ^artist/([^_]*)/biography/$ /artist-biography.php?name=$1 [L]
RewriteRule ^artist/([^_]*)/biography?$ /artist/$1/biography/ [R=301,L]

RewriteRule ^artist/([^_]*)/video/$ /artist-video.php?name=$1 [L]
RewriteRule ^artist/([^_]*)/video?$ /artist/$1/video/ [R=301,L]

RewriteRule ^artist/([^_]*)/news/$ /artist-news.php?name=$1 [L]
RewriteRule ^artist/([^_]*)/news?$ /artist/$1/news/ [R=301,L]

RewriteRule ^artist/([^_]*)/$ /artist.php?name=$1 [L]
RewriteRule ^artist/([^_/]+)$ /artist/$1/ [R=301,L]

RewriteRule ^artist/$ /artist-page.php [L]
RewriteRule ^artist?$ /artist/ [R=301,L]

1 ответ

Решение

Эта линия

RewriteRule ^artist/([^_]*)?$ / Artist/$1/ [R=301,L]

будет соответствовать http://example.com/artist/ что, вероятно, не то, что вы хотели. Измените это как ниже

RewriteRule ^artist/([^_/]+)$ /artist/$1/ [R=301,L]

Если это не решит проблему полностью, дайте мне знать результат.

Другие вопросы по тегам