【问题标题】:Htaccess redirects rules issueHtaccess 重定向规则问题
【发布时间】:2015-12-29 22:24:10
【问题描述】:

我的服务器人员无法解决我遇到的问题。我在根文件夹上运行 Wordpress。我不想有英语的文件夹语言。

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/

网址相同:

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

【问题讨论】:

    标签: php wordpress apache .htaccess mod-rewrite


    【解决方案1】:

    在您的代码中,[^/]* 匹配所有内容,即使它不是语言标识符也是如此。有时您会匹配需要成为脚本名称一部分的内容。

    如果你使用这个...

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

    您只匹配列出的您支持的一种语言。此外,这种通用方法意味着您只需要 1 个重写器,而不是每个 PHP 脚本都需要 1 个。

    【讨论】:

    • 非常感谢您的回答。我试过了,但它也将我重定向到 www.domain.com。此外,我不希望主要语言的 URL 中的语言标识符...
    • 如果你被重定向到 www.domain.com,你必须在其他地方有一些东西,或者在另一个 .htaccess 或主 httpd.conf 中,甚至在 PHP 中。您提供的 .htaccess 在任何地方都没有“www”,因此它无法重定向到其他域。
    • 是的,知道主要语言不应该出现在 URL 中。这就是模式具有? 的原因,这意味着匹配前一个的 0 或 1。如果 URL 不以 fr、de、es 或它开头,则 $2 将为 "",为空(表示 "en")。
    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2014-01-23
    相关资源
    最近更新 更多