Это потому, что первое правило будет ловить второй запрос.
Теперь я внимательно посмотрел на регулярное выражение, но он не поймал бы запрос. Однако ваш второй запрос не удался. Кроме того, как правило, чем более специализированным является переписывание, тем выше он должен быть помещен.
Вам не нужно переписывать все запросы для индексации, но если вы знаете, что делаете, то переупорядочивайте переписывание.
RewriteEngine on
RewriteRule ^/([^/]+)/$ index.php?page=$1 [L]
RewriteRule ^/$ index.php [L]
Edit 1: Принимая во внимание, что вы работаете на локальном хосте, это будет работать для вас.
RewriteEngine on
RewriteBase /mysite/
RewriteRule ^([^/]+)/?$ mysite/index.php?page=$1 [L]
RewriteRule ^$ mysite/index.php [L]
Когда вы идете жить, просто удалить mysite/
часть.
Примечание: Вам не нужно это правило RewriteRule ^$ /index.php [L]
сервер будет автоматически загружать index.php
, если вы посещаете localhost/mysite
. Это ожидаемое поведение, если на вашем сервере настроена загрузка страницы по умолчанию, файл index.php
, в файле конфигурации httpd.conf
.
Edit 2: Я вижу ваши изменения, но вы не можете проверить, что переписывают в текущей структуре URL вы имеете в локальном хосте. Вы должны попробовать и настроить виртуальные хосты для тестирования в среде, которая как можно больше напоминает ваше производство. Найдите в Google, как создавать виртуальные хосты для вашего WAMP, XAMPP или любого другого стека, который вы используете.
Тогда правила перезаписи просты
RewriteEngine on
# page-url -> index.php?page=page-url
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L]
Я вижу ваши изменения, но вы не можете проверить, что переписывают в текущей структуре URL вы имеете в локальный. Вы должны попробовать и настроить виртуальные хосты для тестирования в среде, которая как можно больше напоминает ваше производство. – Shef
Можем ли мы добавить дополнительное условие, которое можно легко удалить позже. Значит, если это localhost, используйте 'localhost/mysite /' иначе просто 'www.mysite.com /'? –
Да, вы можете. Я собираюсь обновить свой ответ с помощью этого решения. Однако для вас было бы лучше, если бы вы использовали виртуальные хосты. – Shef