2013-09-07 4 views
1

У меня есть правила перезаписи следующие HTAccessПереписать правила не работают HTAccess

RewriteRule ^shows-watch/(.*).html?$ show.php?name=$1 
RewriteRule ^shows-watch/(.*)/season-(.*).html?$ show.php?name=$1&season=$2 
RewriteRule ^shows-watch/(.*)/season-(.*)/episode-(.*).html?$ show.php?name=$1&season=$2&episode=$3 

Теперь самое первое правило переписывание работает просто отлично

RewriteRule ^shows-watch/(.*).html?$ show.php?name=$1 

Это просто, когда я пытаюсь с помощью других, только имя получить переменная передается и не

$_GET['season'] 

или

$_GET['episode'] 

Я знаю, что это, скорее всего, что-то простое, я пропустил или сделал, но я просто не могу заставить его работать.

ответ

2

Дайте этому попытку:

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteRule ^shows-watch/([^/]+)/season-([^/]+)/episode-([^/]+).html?$ show.php?name=$1&season=$2&episode=$3 [QSA,NC,L] 
RewriteRule ^shows-watch/([^/]+)/season-([^/]+).html?$ show.php?name=$1&season=$2 [QSA,NC,L] 
RewriteRule ^shows-watch/([^.]+)\.html?$ show.php?name=$1 [QSA,NC,L] 

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

Это предполагает, что ваша .htaccess находится в корневой папке вашего домена вместе с файлом show.php и что вы к нему доступ, как это:

domain.com/shows-watch/Show Name.html 
domain.com/shows-watch/Show Name/season-1.html 
domain.com/shows-watch/Show Name/season-1/episode-10.html 
1

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

RewriteRule ^shows-watch/(.*)/season-(.*)/episode-(.*).html?$ show.php?name=$1&season=$2&episode=$3  
RewriteRule ^shows-watch/(.*)/season-(.*).html?$ show.php?name=$1&season=$2 
RewriteRule ^shows-watch/(.*).html?$ show.php?name=$1 

Или вы можете исключить косую черту, как это:

RewriteRule ^shows-watch/([^/]*).html?$ show.php?name=$1 
RewriteRule ^shows-watch/([^/]*)/season-([^/]*).html?$ show.php?name=$1&season=$2 
RewriteRule ^shows-watch/([^/]*)/season-([^/]*)/episode-([^/]*).html?$ show.php?name=$1&season=$2&episode=$3 
+0

К сожалению, это не делает разницы –

+0

Попробуйте опять же, я тестировал его на своем локальном хосте, и он работал хорошо. –

Смежные вопросы