【问题标题】:.htaccess Rewrite rules for unknown subfolders.htaccess 重写未知子文件夹的规则
【发布时间】:2020-12-17 18:04:06
【问题描述】:

我面临以下问题:

我在服务器中的文件夹结构是:public_html/projects/

树状图:folder structrure tree view

public_html 文件夹中有一个 .htaccess 文件。

projects 文件夹中,我的合作伙伴将创建带有登录页面的 numerus 文件夹(假设只是一个 index.php 文件)

我尝试应用的重写规则是 languagecurrency url 参数。


所以,例如 这个网址: https://www.example.com/projects/whatever-project-name/index.php?lang=en&currency=eur

必须翻译成: https://www.example.com/projects/whatever-project-name/en/eur/

另外,货币变量是可选的。 (语言变量是强制变量)

所以网址也可能是这样的:https://www.example.com/projects/whatever-project-name/en/


为了解决这个问题,我现在正在寻找和尝试(哭泣)几天。唯一接近我的解决方案是: RewriteRule for unknown directory

但我没能成功。

到目前为止我所拥有的(但它不能正常工作)是:

RewriteEngine On
RewriteRule ^(.*/)?/([a-zA-Z0-9]{2,3})/([a-zA-Z0-9-]+)/?$ projects/$1index.php?lang=$2&currency=$3
RewriteRule ^(.*/)?/([a-zA-Z0-9]{2,3})/?$ projects/$1index.php?lang=$2[L]

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:

    根据您显示的示例,您能否尝试以下操作。请确保在测试 URL 之前清除浏览器缓存。

    RewriteEngine ON
    ##With currency variable in URI.
    RewriteCond %{REQUEST_URI} ^/projects/([\w-]+)/en/([\w-]+)/?$ [NC]
    RewriteRule ^(.*)$ projects/%1/index.php?lang=en&currency=%2 [L]
    
    ##Without currency variable in URI.
    RewriteCond %{REQUEST_URI} ^/projects/([\w-]+)/en/?$ [NC]
    RewriteRule ^(.*)$ projects/%1/index.php?lang=en [L]
    

    【讨论】:

    • 感谢您的快速回复!我刚刚尝试了您的解决方案,但我得到了一个内部服务器错误页面
    • @GregVlachokostas,很抱歉,第一条规则中缺少一个错字),您能否尝试编辑一下,然后告诉我情况如何?
    猜你喜欢
    • 2012-11-22
    • 1970-01-01
    • 2012-02-24
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2017-07-16
    • 2016-03-30
    相关资源
    最近更新 更多