.htaccess: mod_rewrite - PullRequest
       15

.htaccess: mod_rewrite

0 голосов
/ 22 августа 2011

Вот что я пытаюсь сделать: (этот файл .htaccess находится по адресу mysite.com/test/):

http://mysite.com/test/admin перейти к http://mysite.com/test/admin/index.php

http://mysite.com/test/contact перейти к http://mysite.com/test/contact.php

http://mysite.com/test/salt-lake-city/ перейти к http://mysite.com/test/index.php/city=salt-lake-city

http://mysite.com/test/salt-lake-city/deals/ перейти к http://mysite.com/test/deals.php?city=salt-lake-city

Для начала у меня есть:

RewriteRule ^(.*)/(.*)\.php$ $2.php?city=$1 [L]

(это обрабатывает последние 2). Но, когда я пытаюсь добавить предложение администратора:

RewriteRule ^admin/ admin/index.php [L]

RewriteRule  ^(.*)/(.*)\.php$ $2.php?city=$1 [L]

Он портится (CSS не в порядке) и т. Д.

Есть мысли?

1 Ответ

0 голосов
/ 23 августа 2011

Хорошо ... если бы мне пришлось выполнить эти правила перезаписи, я бы сделал их так:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]

# admin rewrite
RewriteRule ^admin$ admin/index.php [L]

# rewrite /contact --> /contact.php (and similar)
# add .php extension if such file does exist
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1.php [L]
# OR
# alternatively specify their names directly
# plus it is more precise for the example you have provided
# (that's if you need to rewrite only specific pages)
RewriteRule ^(contact|about|something)$ $1.php [L]

# /salt-lake-city/ --> /index.php?city=salt-lake-city
RewriteRule ^([^/]+)/$ index.php?city=$1 [QSA,L]

# /salt-lake-city/deals/ --> /deals.php?city=salt-lake-city
RewriteRule ^([^/]+)/deals/$ deals.php?city=$1 [QSA,L]

Для начала у меня есть:

RewriteRule ^(.*)/(.*)\.php$ $2.php?city=$1 [L]

(это обрабатывает последние 2).

Извините, но я не вижу, как "он будет обрабатывать последние 2".Я не вижу .php в последних двух примерах URL, которые вы предоставили.

Он испортился (css не в порядке) и т. Д.посмотрим как это будет работать с моими правилами.В любом случае - это может также зависеть от того, как вы написали ссылки на css / images / js.

...