2014-11-08 4 views
-1

меняю на сайте URL, чтобы принять Diferent языков, поэтому я перехожу содержание сайта для языкаHtaccess 301 перенаправления языка подкаталог

по умолчанию от: www.site.com до: www.site.com/en

Теперь, я делаю перенаправление с php, если $_GET['lang'] не существует или $_GET['path'] существует, перенаправляйте на сайт site.com/en или site.com/en/(path), но я думаю, что перенаправление 301 из корня в папку лучше ,

Как я могу написать это правило?

Это мой файл .htaccess:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

RewriteRule ^download/(.*)$ php/download.php?id=$1 [L] 

# with language 
RewriteRule ^([a-z]{2})/p/(.*)$ single.php?lang=$1&hash=$2 [L] 
RewriteRule ^([a-z]{2})$ index.php?lang=$1 [L,NC,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^?]*)$ index.php?path=$1 [NC,L,QSA] 

Благодаря

+0

Нужна ясность. Каков пример URL-адресов и как эти URL-адреса должны обрабатываться. – anubhava

ответ

0

Если я правильно понимаю, это будет делать то, что вы хотите.

Updated .htaccess (с комментариями для лучшего понимания)

RewriteEngine on 
RewriteBase/

# If the hostname is a `www` subdomain, redirect to the parent domain 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

# Internal rewrite of Download request URL to download PHP script 
RewriteRule ^download/(.*)$ php/download.php?id=$1 [L] 

# If request path is just root `/` (redirect to default language site) 
RewriteRule ^$ /en [R=301,L] 

# If request path is a language code, 
# internally rewrite to index.php with `lang` query paramater 
RewriteRule ^([a-z]{2})$ index.php?lang=$1 [L,NC,QSA] 

# If request path begins with lang code and has a hash segment, 
# internally rewrite to single.php with `lang` and `hash` query parameters 
RewriteRule ^([a-z]{2})/p/(.*)$ single.php?lang=$1&hash=$2 [L] 

# If request path begins with lang code and has additional segements 
RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&path=$2 [NC,L,QSA] 

# For every other request path not having a language code, 
# if path is not an existing file or directory, 
# redirect to a path prefixing default lang code before the requested path 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^?]*)$ /en/$1 [NC,L,R=301] 
Смежные вопросы