#.htaccess #mod-rewrite
#.htaccess #мод-перезапись
Вопрос:
У меня есть следующий файл .htaccess:
Options FollowSymlinks
RewriteEngine on
RewriteRule ^mangas/([^/] )/([^/] )/$ - [F,L]
RewriteRule ^mangas/([^/] )/$ - [F,L]
RewriteRule ^mangas(/?)$ - [F,L]
RewriteRule ^([^/.] )/([^/.] )/([0-9] )(/?)$ index.php?manga=$1amp;chapter=$2amp;page=$3 [L]
RewriteRule ^([^/.] )/([^/.] )(/?)$ index.php?manga=$1amp;chapter=$2 [L]
RewriteRule ^([^/.] )(/?)$ index.php?manga=$1 [L]
Но что происходит, когда вы переходите по ссылке следующим образом: /manga/name_of_manga
Это выдает мне ошибку 404 not found. Файл htaccess не перезаписывает index.php?manga=$1
в это: /manga/name_of_manga
?
По сути, все, что находится в форме index.php?manga=$1
, преобразуется только в /manga/name_of_manga
, и оно все равно должно отображать материал. Если я перейду напрямую, используя index.php метод, он работает нормально.
Например, эти работы: http://neoblizz.net/manga/?manga=Tower of God
http://neoblizz.net/manga/index.php?manga=Tower of God
Они не: http://neoblizz.net/manga/Tower_of_God/
http://neoblizz.net/manga/Tower of God/
154.20.109.65 - - [03/Jul/2014:18:28:50 -0400] "GET /manga/ HTTP/1.1" 500 - neoblizz.net "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"
154.20.109.65 - - [03/Jul/2014:18:28:51 -0400] "GET /manga/ HTTP/1.1" 500 - neoblizz.net "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"
154.20.109.65 - - [03/Jul/2014:18:28:52 -0400] "GET /manga/ HTTP/1.1" 500 - neoblizz.net "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"
154.20.109.65 - - [03/Jul/2014:18:28:52 -0400] "GET /manga/ HTTP/1.1" 500 - neoblizz.net "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"
Комментарии:
1. Каково местоположение этого .htaccess? Это в
/comic/
каталоге?2. ДА. Он находится внутри
/comic/
.3. @anubhava добавил пример со ссылками.
Ответ №1:
Пусть будет так:
Options FollowSymlinks
RewriteEngine on
RewriteBase /manga/
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^mangas/([^/] )/([^/] )/?$ - [F,L]
RewriteRule ^mangas/([^/] )/?$ - [F,L]
RewriteRule ^mangas/?$ - [F,L]
RewriteRule ^([^/] )/([^/] )/([0-9] )/?$ index.php?comic=$1amp;chapter=$2amp;page=$3 [L,QSA]
RewriteRule ^([^/] )/([^/] )/?$ index.php?comic=$1amp;chapter=$2 [L,QSA]
RewriteRule ^([^/] )/?$ index.php?comic=$1 [L,QSA]
Комментарии:
1. Внутренняя ошибка сервера теперь другие ссылки тоже не работают (те, которые работали раньше).
2. можете ли вы объяснить, в чем может быть причина?
3. О, там была опечатка, теперь исправлена. Можете ли вы попробовать еще раз?
4. Я тоже пробовал с этим, опечатки тоже
/manga/
не/mangas/
было, все комиксы в правиле перезаписи — это манга. Но не сработало. Это действительно расстраивает, так как другой мой сайт использует те же настройки и работает просто отлично.5. Как только вы выясните свои настоящие имена, это довольно простой материал в rewrite, и он работал в моих тестах. Лучше бы вы указали подробности, например, каково местоположение этого .htaccess? Какой URL-адрес не сработал? Какую ошибку вы видите и т.д.?