2015-12-29 102 views
0

我的服務器人無法解決我遇到的問題。我在根文件夾上運行Wordpress。我不想擁有英文的文件夾語言。Htaccess重定向規則問題

https://domain.com/account/t/ 

https://domain.com/fr/account/t/ 

是爲做工精細,同樣的:

https://domain.com/auth/ 

https://domain.com/fr/account/t/myaccount/ 

工作正常,但不

https://domain.com/account/t/myaccount/ 

同爲URL:

https://domain.com/fr/account/t/tests/ 

工作正常,但不

https://domain.com/account/t/test/ 

它重新導向至www.domain.com ...

會有人有一個想法?這裏是我的htaccess文件:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteRule ^([^/]*)/auth/$ /auth/?lang=$1 [L] 
RewriteRule ^([^/]*)/auth/login$ /auth/login.php?lang=$1 [L] 
RewriteRule ^([^/]*)/auth/logout$ /auth/logout.php?lang=$1 [L] 
RewriteRule ^([^/]*)/auth/registration$ /auth/registration_form.php?lang=$1 [L] 
RewriteRule ^([^/]*)/auth/password-forgotten$ /auth/forgot_form.php?lang=$1 [L] 
RewriteRule ^([^/]*)/auth/reset$ /auth/reset.php?lang=$1 [L] 
RewriteRule ^([^/]*)/auth/activate$ /auth/activate.php?lang=$1 [L] 
RewriteRule ^([^/]*)/account/$ /account/?lang=$1 [L] 
RewriteRule ^([^/]*)/account/t/$ /account/t/?lang=$1 [L] 
RewriteRule ^([^/]*)/account/t/jobs/$ /account/t/jobs.php?lang=$1 [L] 
RewriteRule ^([^/]*)/account/t/myaccount/$ /account/t/myaccount.php?lang=$1 [L] 
RewriteRule ^([^/]*)/account/t/([^/]*)$ /account/t/?lang=$1&step=$2 [L] 
RewriteRule ^([^/]*)/account/t/tests/$ /account/t/testspage.php?lang=$1 [L] 
RewriteRule ^([^/]*)/account/c/$ /account/c/?lang=$1 [L] 
RewriteRule ^([^/]*)/account/c/([^/]*)$ /account/c/?lang=$1&step=$2 [L] 


RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

回答

0

在你的代碼,[^/]*匹配所有,即使它不是一個語言標識。有時你會匹配某些需要成爲腳本名稱一部分的東西。

如果使用此...

RewriteRule ^((fr|de|es|it)/)?(.*) /$3.php?lang=$2 

你只匹配您的支持是列出的語言之一。此外,這種通用方法意味着您只需要1次重寫,而不是每個PHP腳本都有1次。

+0

非常感謝您的回答。我試過了,但它也將我重定向到www.domain.com。另外,我不想在主要語言的URL中使用語言標識... – JordanBelfort17

+0

如果您正在重定向到www.domain.com,則必須在其他.htaccess或主httpd.conf中有其他位置,或者即使在PHP中。您提供的.htaccess在任何地方都沒有「www」,因此無法重定向到其他域。 – BareNakedCoder

+0

是的,瞭解主要語言不應該在URL中。這就是爲什麼該模式具有'?',這意味着匹配0或1的前一個。如果URL不是以fr,de,es或OR開頭,那麼$ 2將是「」,爲空(暗示「en」)。 – BareNakedCoder