Вопрос о переписывании URL с использованием apache mod_rewrite - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть сомнения по поводу перезаписи URL с использованием apache mod_rewrite. Я новичок в mod_rewrite, и у меня нет никакого опыта в регулярных выражениях.

Что я хочу сделать, это:

Переписать / К / web / content / public /

Переписать / клиенты / К / веб / контент / клиенты /

Как я могу достичь выше всего.

Я пытался:

   <IfModule mod_rewrite.c>

   Options +FollowSymLinks
   RewriteEngine on

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-l

   RewriteRule    ^/clients/$ web/content/clients/ [L]
   RewriteRule    ^(.*)$ web/content/public/$1 [L]
   </IfModule>

Но это не работает. Что я могу сделать?

Ответы [ 2 ]

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

Попробуйте это:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
RewriteRule ^/clients/$ web/content/clients/ [L]
RewriteRule ^/(.*)$ web/content/public/$1 [L]

И если вы хотите использовать эти правила в файле .htaccess, удалите начальную косую черту из шаблонов.

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

^(.*)$ включает косую черту. Так что не включайте косую черту в переписанный шаблон. Но добавьте косую черту в начале вашего переписанного шаблона.

 RewriteRule    ^/clients(.*)$ /web/content/clients$1 [L]
 RewriteRule    ^(.*)$ /web/content/public$1 [L]

Проверьте журнал доступа apache и журнал ошибок, чтобы увидеть, какой тип URL-адреса запроса возвращается.

Пожалуйста, , проверьте документацию , особенно список с надписью "Вот все возможные комбинации замещения и их значения:"

...