Нужна помощь с проблемами Apache Rewrite - PullRequest
3 голосов
/ 15 декабря 2009

Мой разработчик предоставил мне некоторые правила переписывания Apache, которые необходимы для работы нашего приложения. Когда я добавил их в Apache, мои страницы www.domain.com/blog и www.domain.com/phpmyadmin больше не работали. Я попытался добавить первое правило RewriteCond для моего блога, а также последнее правило phpmyadmin, но ни одно из них не работает должным образом. По сути, я хочу, чтобы любые запросы к / blog или / phpmyadmin НЕ переписывались и не переходили в корневой каталог моего документа и не запускали эти приложения вне перезаписей. Можете ли вы помочь мне найти решение? Спасибо

RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^/(.*_css.*\.css.*) /$1 [QSA,L]
RewriteRule ^/(.*_js.*\.js.*) /$1 [QSA,L]
RewriteRule ^/(.*_swf.*\.swf.*) /$1 [QSA,L]
RewriteRule ^/(.*_img.*\.[jpg|JPG|jpeg|JPEG|gif|GIF|bmp|BMP|png|PNG].*) /$1 [QSA,L]
RewriteRule ^/(.*)$ /index.php?url=$1 [QSA,L]
RewriteRule ^/phpmyadmin(.*)$ /phpmyadmin$1 [QSA,L]
</VirtualHost>

Они расположены по адресу www.domain.com/blog и www.domain.com/phpmyadmin.

.

Apache 2.2.13

Спасибо!

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

Если вы хотите избежать переписывания URL-адресов, начинающихся с /blog/ или /phpmyadmin/, то вы , возможно, сможете отказаться от первого правила:

RewriteRule ^/(?:blog|phpmyadmin)/ - [L]

(замена RewriteCond и удаление старого правила phpmyadmin).

Краткое объяснение: оно сопоставляет любые URL-адреса, начинающиеся с /blog/ или /phpmyadmin/, и не переписывает их (- для замены), а затем останавливает дальнейшее переписывание ([L]).


Предыдущий ответ:

Для начала ваши правила переписывания противоречивы. Также на данный момент RewriteCond применяется только к первому правилу. Кроме того, последнее правило игнорируется из-за правила, перед которым оно соответствует всему. Вы можете захотеть что-то вроде этого:

RewriteRule ^/blog/(.*)$ /index.php?url=$1 [QSA,L]

как я полагаю, вы просто пытаетесь переписать все URL с /blog/foo/bar на /index.php?url=foo%2fbar? Если нет, пожалуйста, объясните, что вы пытаетесь сделать, и я отредактирую свой ответ.

0 голосов
/ 15 декабря 2009

Ошибка ... не уверен, что ты пытаешься сделать. Вы пытаетесь «исключить» статические файлы в виде изображений / таблиц стилей / флэш-фильмов / файлов javascript и ссылки на PHPMyAdmin? Может быть, что-то вроде этого может сделать работу для вас 'quick' n dirrrrty '

# Enable the RewriteEngine
RewriteEngine   On
RewriteBase     /

# Check if the file, directory or symlink does not already exists.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !favicon\.ico
RewriteCond %{REQUEST_FILENAME} !robots\.txt

# Rewrite all other requests to the index.php
RewriteRule ^(.+)$  /index.php?url=$1       [QSA,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...