Я пытаюсь создать красивые URL-адреса. Я добился этого для случая, когда я хочу, чтобы вся строка указывала на один скрипт PHP. Я не делаю.
Итак, это работает: example.com/login/1/2
=> /index.php?go=login&do=1&msg=2
Использование:
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9a-zA-Z_-]+)/?$ /index.php?go=$1 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2 [L,QSA]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /index.php?go=$1&do=$2&q1=$3 [L,QSA]
Теперь давайте скажем, я хочу example.com/webapp/1/2/3
=> webapp.php? 1 = 1 & 2 = 2 & 3 = 3
Добавив это под приведенным выше:
RewriteRule ^webapp/?$ /webapp.php [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2 [L,QSA]
RewriteRule ^webapp/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/?$ /webapp.php?go=$1&do=$2&q1=$3 [L,QSA]
Навигация to example.com/webapp
перенаправляет на index.php
каждый раз, удаляя любую строку запроса.
Если я закомментирую первый блок кода и перейду на example.com/webapp
, я получу webapp.php
, как должен.
Я не получаю ошибок ни в одном журнале. Журнал доступа во время звонка сообщает 302 в webapp
Что я делаю не так?
добавив это ниже
Вам необходимо добавить, что перед выше!
Ваши правила должны быть расположены в порядке специфичности. Сначала более конкретные правила, затем - самые общие. Ваш первый блок правил содержит самые общие / всеобъемлющие правила, так что это то, что улавливает запрос и где обработка останавливается.
Я не уверен, правильно ли вы поняли понятие красивых URL-адресов: https://en.wikipedia.org/wiki/Semantic_URL То, что вы планируете делать, определенно не поможет вашему SEO. И вы не должны перенаправлять временно (302 редирект), а постоянно [R = 301].