【问题标题】:htaccess redirect url with language and page parameters带有语言和页面参数的 htaccess 重定向 url
【发布时间】:2016-01-18 18:02:02
【问题描述】:

我真的迷失了重定向 htaccess 的所有规则,我找不到解决问题的完美解决方案。 我正在尝试重定向看起来像这样的网址:

http://mywebpage.eu/path/to/site/LANGUAGE/PAGE

应该重定向到谁

http://mywebpage.eu/path/to/site/index.php?lang=LANGUAGE&page=PAGE

但有时他们可能会像这样没有 PAGE 或 LANGUAGE

http://mywebpage.eu/path/to/site/LANGUAGE/
http://mywebpage.eu/path/to/site/PAGE/

应该重定向到谁

http://mywebpage.eu/path/to/site/index.php?lang=LANGUAGE&page=
http://mywebpage.eu/path/to/site/index.php?lang=&page=PAGE

(所有这些示例都可以以“/”结尾)

当我最终得到工作的一部分时,我所有的 css/images/js/include(php) 都是 404 错误,因为添加了那个虚拟子文件夹“/LANGUAGE/”...

RewriteEngine on
RewriteBase /path/to/site/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&page=$2 [L,QSA]

非常感谢您的帮助。

【问题讨论】:

    标签: php .htaccess redirect mod-rewrite


    【解决方案1】:

    像这样:

    RewriteEngine on
    RewriteBase /path/to/site/
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    
    RewriteRule ^([a-z]{2})(?:/(.*))?/?$ index.php?lang=$1&page=$2 [L,QSA]
    
    RewriteRule ^(\w+)/?$ index.php?lang=&page=$1 [L,QSA]
    

    对于 css/js/images,您可以在页面 HTML 的 <head> 部分下方添加以下内容:<base href="/path/to/site/" /> 以便每个 相对 URL 都从该基本 URL 而不是当前页面的 URL。

    【讨论】:

    • 非常感谢伙计 :) 看起来很完美!
    猜你喜欢
    • 2022-12-29
    • 2020-10-29
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多