htaccess не работает как надо - PullRequest
       9

htaccess не работает как надо

0 голосов
/ 10 февраля 2010

ну, конечно, это не работает, я все еще n00b:)

это код, который у меня есть:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)\.css - [S=7]
RewriteRule (.*)\.jpg - [S=6]
RewriteRule ^gallery gallery.html [L]

RewriteRule (.*)/(.*)/ index.html?page=$2 [L]
RewriteRule (.*)/(.*) index.html?page=$2 [L]
RewriteRule (.*)/ index.html?page=$1 [L]
RewriteRule (.*) index.html?page=$1 [L,QSA]

Теперь, это работает нормально, если я попробую localhost / abc но это не сработает, если я попробую localhost / abc /

также, когда я пытаюсь использовать localhost / abc / def (или localhost / abc / def / в этом отношении), файл css не включается правильно я получаю сообщение об ошибке, что /abc/def/style.css не существует. (

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

спасибо!

Ответы [ 2 ]

0 голосов
/ 10 февраля 2010

Вы должны использовать более конкретные шаблоны. .* означает ноль или более произвольных символов. Это соответствует чему угодно, даже пустой строке.

В вашем случае abc/, вероятно, соответствует правилу с шаблоном (.*)/(.*), а не правилу с (.*)/, как вы могли предположить.

Вместо этого попробуйте [^/]+ (один или несколько символов, кроме /) и добавьте утверждения для начала (^) и конца строки ($):

RewriteRule ^([^/]+)/([^/]+)/$ index.html?page=$2 [L]
RewriteRule ^([^/]+)/([^/]+)$ index.html?page=$2 [L]
RewriteRule ^([^/]+)/$ index.html?page=$1 [L]
RewriteRule ^([^/]+)$ index.html?page=$1 [L,QSA]

И, как уже сказал shaunhare.co.uk, вы можете установить дополнительный /, добавив к нему квантификатор ?:

RewriteRule ^([^/]+)/([^/]+)/?$ index.html?page=$2 [L]
RewriteRule ^([^/]+)/?$ index.html?page=$1 [L]
0 голосов
/ 10 февраля 2010

Сортируйте проблему с косой чертой с помощью (/)? а не / один

? = Ноль или один из предшествующих символов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...