У меня есть следующий файл.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.
Удалите главную косую черту с рисунком перезаписи
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/(.*)/(.*)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L,R=301]
Во-первых, я не знаю, почему вы используете 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