Это потому, что первое правило будет перехватывать второй запрос. Теперь, когда я более внимательно посмотрел на регулярное выражение, нет, оно не будет перехватывать запрос.Однако ваш второй запрос потерпит неудачу.Кроме того, как правило, чем более специализирован перезапись, тем выше она должна быть размещена.
Вам не нужно переписывать все запросы на индексирование, но если вы знаете, что делаете, то перезапустите-заказ переписывает.
RewriteEngine on
RewriteRule ^/([^/]+)/$ index.php?page=$1 [L]
RewriteRule ^/$ index.php [L]
Редактировать 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
.
Редактировать 2 : Я вижу вашеотредактируйте, но вы не можете проверить это переписывание в текущей структуре URL у вас на localhost.Вы должны попытаться настроить виртуальные хосты для тестирования в среде, максимально похожей на вашу продукцию.Найдите в Google информацию о том, как создать виртуальные хосты для вашего WAMP, XAMPP или любого другого стека, который вы используете.
Тогда правила перезаписи просты
RewriteEngine on
# page-url -> index.php?page=page-url
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L]