Что я делаю не так с этим .htaccess?

1

У меня есть следующий файл.htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)/(.*)/(.*)$    index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L,R=301]

Когда я обращаюсь к своему сайту с помощью http://www.domain.com/testpage/, он дает мне ошибку 404 Not Found. Что я делаю не так?

PS: в настоящее время файлы index.php просто повторяют значения pageLevel1, pageLevel2 и pageLevel3.

Теги:
.htaccess
redirect

2 ответа

3
Лучший ответ

Удалите главную косую черту с рисунком перезаписи

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/(.*)/(.*)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L,R=301]
1

Во-первых, я не знаю, почему вы используете 301 переадресацию вообще? Если вы хотите принять все символы в URL-адресе, вам просто нужно иметь правило перезаписи для всех:

RewriteRule ^(.*)$ index.php?param=$1 [L]

Если вы хотите поймать параметры, как вы определили, правила перезаписи могут быть такими:

RewriteRule ^([A-Za-z-]+)/([A-Za-z-]+)/([A-Za-z-]+)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L]

ОБНОВИТЬ:

Завершенные правила в вашем случае (три уровня страницы), с URL-пулями, которые принимают буквы и цифры, могут быть такими:

RewriteRule ^([A-Za-z0-9-]+)$ index.php?pageLevel1=$1&pageLevel2=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)$ index.php?pageLevel1=$1&pageLevel2=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L]

Таким образом, вы можете получить доступ к таким страницам, как:

www.domain.com/test
www.domain.com/test/another-test
www.domain.com/test/another-test/new-level

Ещё вопросы

Сообщество Overcoder
Наверх
Меню