.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的使用方法

.htaccess相关问题

.htaccess文件得用途

Htaccess 重写链接在 .htaccess 文件中不起作用

已解决 - .htaccess 在服务器上产生 404,但通过 htaccess 验证器