2009-04-02 3 views
2

Что это самый простой способ, чтобы преобразовать эти запросы:Использование mod_rewrite для преобразования папки в строку запроса

http://www.example.com/en/ 
http://www.example.com/en/index.php 

To:

http://www.example.com/index.php?language_id=en 

Там в различных PHP-файлов, поэтому правило также потребуется карта

http://www.example.com/en/anyfile.php 

Кому:

http://www.example.com/anyfile.php?language_id=en 

Идентификатор языка может быть любым двухбуквенным кодом (он проверен в PHP-скрипте, чтобы убедиться, что он действителен).

Предположительно, мне нужно будет использовать .htaccess, и любые советы о том, как реализовать вышеизложенное, будут очень признательны. Благодарю.

Update

Следующие работал для меня.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ([a-z]+)/(css|js|images)/(.+) /$2/$3 [L] 
    RewriteRule ([a-z]+)/(.+).php /$2.php?language_id=$1 [QSA,L] 
    RewriteRule ([a-z]+)/$ /index.php?language_id=$1 [QSA,L] 
</IfModule> 

Это также перенаправляет запросы к CSS, JS, и изображения папки обратно в корневую папку. Он также работает, если имя файла не введено, автоматически перенаправляется на index.php.

ответ

2

Вы, вероятно, хотите добавить QSA флаг ваших правил перезаписи, которая будет добавлять любые addiitonal биты на строку запроса перезаписанную запроса, например,

RewriteRule magic here [PT,QSA] 
+0

Спасибо, флаг QSA это то, что я искал :-) – Mun

+0

спасибо, я всегда задавался вопросом, что это флаг был –

0
RewriteRule /en/(.*) /$1?language_id=en 

Это непроверенное, но в теории это должно отобразить все, что после ванной, чтобы быть переменным becore? LANGUAGE_ID = еп

Вы также могли бы сделать

RewriteRule /([a-zA-Z0-9+])/(.*) /$2?language_id=$1 

Это также карта

http://www.example.com/is/index.php

Для

http://www.example.com/index.php?language_id=is

0

Я использую следующий построить для дружественных URL,:

RewriteRule ^([^/]+)[/]{0,1}(.*)$ index.php?q=$2&language=$1 [L,QSA,NC] 
Смежные вопросы