Правило Apache ReWrite, останавливающее части нашего приложения - PullRequest
0 голосов
/ 13 октября 2009

Наше приложение использует правила перезаписи в нашем приложении PHP, и наш разработчик добавил эти правила перезаписи в наш файл Apache VHosts:

Я обновил наши правила перезаписи, основываясь на предложении ниже.

В настоящее время моя конфигурация файла VHosts выглядит следующим образом:

RewriteCond% blog! -D RewriteRule ^ / ([a-zA-Z0-9 -,] +) /? $ /Index.php?a=$1

RewriteCond% blog! -D RewriteRule ^ / ([a-zA-Z0-9 -,] +) / ([a-zA-Z0-9 -,] +) /? $ /Index.php?a=$1&b=$2

RewriteCond% blog! -D RewriteRule ^ / ([a-zA-Z0-9 -,] +) / ([a-zA-Z0-9 -,] +) / ([a-zA-Z0-9 -,] +) /? $ /index.php?a=$1&b=$2&c=$3

RewriteCond% blog! -D RewriteRule ^ / ([a-zA-Z0-9 -,] +) / ([a-zA-Z0-9 -,] +) / ([a-zA-Z0-9 -,] +) / ([ a-zA-Z0-9 -,] +) /? $ /index.php?a=$1&b=$2&c=$3&d=$4&e=$5

В настоящее время я могу успешно получить доступ ко всем другим вкладкам наших приложений, таким как / goods и т. Д. Но я все еще не могу получить доступ к www.test.com/blog

Он все еще перенаправляет меня на главную страницу index.php нашего приложения. Из переписанных логов:

[13 / Oct / 2009: 17: 08: 41 --0400] [www.test.com/sid#8d03d8][rid#b902d8/initial] (1) пройти через /blog/wp-login.php [13 / Oct / 2009: 17: 08: 41 --0400] [www.test.com/sid#8d03d8][rid#b942f8/initial] (1) обзор / /public_html/index.php [OK ]

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 октября 2009

Вы пробуете много вещей в своих правилах переписывания. Я советую вам не делать этого.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php?url=$0 [PT,L]

Советую переписать всю строку в переменную $_GET['url']. Вы можете взорвать эту переменную в своем коде. Таким образом, вы должны редактировать свой vhost только один раз.

Значение RewriteCond все еще учитывается в обоих случаях (в приведенном выше и ниже примере).

Эти условия перезаписи проверят, существует ли файл или каталог. Если нет, то будет применено правило перезаписи

если условия не сработают, старайтесь ставить условие выше каждого RewriteRule как это:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2&c=$3 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2&c=$3&d=$4
0 голосов
/ 15 октября 2009

Попробуйте использовать условия

RewriteCond %{REQUEST_URI} !^/blog$ [OR]
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^/([a-zA-Z0-9-_,]+)/?$ /index.php?a=$1

Это вопрос игры с условиями и регулярными выражениями. Это должно предотвратить запуск rewriterule, когда URI начинается с "/ blog /"

...