.htaccess rewritecond/rule 并隐藏 url 参数
Posted
技术标签:
【中文标题】.htaccess rewritecond/rule 并隐藏 url 参数【英文标题】:.htaccess rewrite cond/rule and hide url paremeters 【发布时间】:2020-04-03 07:52:28 【问题描述】:我的根目录中有一个 htaccess。
我的文件路径http://example.com/folder1/folder2/index.php?country=eu&lang=en
这是我在 htaccess 中制作的。
RewriteCond %HTTP_HOST ^(www.)?anothersite.com$
RewriteRule ^([^/]*)/([^/]*)$ /folder1/folder2/index.php?country=$1&lang=$2 [L]
RewriteRule ^([^/]*)$ /folder1/folder2/index.php [L]
看起来像这样
http://example.com/index.php?country=eu&lang=en
但我想要这样 -> http://example.com/eu-en
有没有办法在 htaccess 中做到这一点?
编辑: 我必须使用重写条件,因为我重定向到文件夹取决于主机。
编辑 2:解决方案
RewriteCond %HTTP_HOST ^(www.)?anothersite.com$
RewriteRule ^([a-z]2,2)-([a-zA-Z0-9_-]+)$ /folder1/folder2/index.php?country=$1&lang=$2 [QSA]
感谢回答,它现在正在工作。但在那之后我在网站上得到了 css 和 js 错误。然后我更改了css和js路径/folder1/folder2/css。
【问题讨论】:
【参考方案1】:您需要附加 [QSA](查询字符串附加)标签。试试
RewriteEngine on
RewriteRule ^([a-z]2,2)/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 [QSA]
见http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
【讨论】:
这不行,你可以在这里验证htaccess.madewithlove.be 您必须将/
替换为-
你好。它可以工作,但我的 css 和 js 文件出现错误。找不到他们。我该如何解决?【参考方案2】:
试试下面,
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^([^/]+)-([^/]+)$ index.php?country=$1&lang=$2 [QSA]
【讨论】:
当我添加这段代码时,我所有的 css 和 js 都消失了,我该怎么办? 除此之外是否还有其他规则起作用,然后将其写在代码的底部,您也可以在视图文件的 head 部分使用<base href="/">
标签。
是的。我正在根据我的主机重定向到文件夹。例如,如果托管 example.com,那么我调用 folder1/folder2/index.php,否则如果 example1.com,我调用 folder3/folder4/index.php以上是关于.htaccess rewritecond/rule 并隐藏 url 参数的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess 这个网页有一个重定向循环 htaccess
apache开启.htaccess及.htaccess的使用方法