Как перенаправить все, кроме одного URL-адреса в скрипт - PullRequest
0 голосов
/ 24 августа 2010

Я пытаюсь заставить www.example.com и www.example.com/index.html перейти на index.html, но я хочу, чтобы все остальные URL, например, www.example.com/this/is/another/link, чтобы по-прежнему показывать www.example.com/this/is/another/link, но обрабатывать с помощью общего сценария. Я пробовал

RewriteEngine on
RewriteCond %{REQUEST_URI} !^index\.html$
RewriteCond %{REQUEST_URI} !^$
RewriteRule ^(.*)$ mygenericscript.php [L]

но это не сработает, может кто-нибудь помочь?

Ответы [ 3 ]

3 голосов
/ 24 августа 2010

Вместо того, чтобы проверять, что такое %{REQUEST_URI}, вы можете просто проверить, существует ли ресурс:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* mygenericscript.php

Это предотвращает перенаправление статических ресурсов (изображений, таблиц стилей и т. Д.), Если они обрабатываются в том же каталоге, в котором находится .htaccess.

Вероятно, сейчас происходит то, что вы видите внутреннюю ошибку сервера, вызванную бесконечным внутренним циклом перенаправления, когда вы пытаетесь получить доступ ко всему, что не / или /index.html. Это связано с тем, что .* соответствует каждому запросу, и после первого перезаписи на mygenericscript.php набор правил обрабатывается повторно (из-за того, как mod_rewrite работает в контексте, в котором вы его используете).

0 голосов
/ 24 августа 2010

Похоже, что вы используете PHP, и вы можете использовать auto_x_file (x означает добавление или добавление:

http://php.net/manual/en/ini.core.php

0 голосов
/ 24 августа 2010

Проще всего это установить обработчик 404, который запускается, когда сервер не находит файл для отображения.

ErrorDocument 404 /mygenericscript.php

или

ErrorDocument 404 /cgi-bin/handler.cgi

или подобное должно сделать трюк.

Дело не в том, что RewriteRule нельзя использовать для этого, просто их сложно настроить и требует глубоких знаний о том, как apache обрабатывает запросы. Это немного чёрного искусства.

...