我(很可能)很容易解决问题。我的简单.htaccess不能正常工作,我无法弄清楚发生了什么。
htaccess的:
RewriteEngine On
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L]
然后,当我转到http://domain.com/soccer/
然后在控制台中运行此行:window.location.search.replace( "?", "" );
它给了我什么,而它应该给我sport=soccer
完全正如我去“{{ {3}} ......
这可能很简单,但.htaccess对我来说是个谜。
问题: 当人们输入
时,如何让重写工作domain.com/soccer/
完全符合:
domain.com/index.html?sport=soccer
一些简单的解释(没有必要)会有很大的帮助,所以最后我可以理解.htaccess ..
欢呼声
答案 0 :(得分:0)
如果您没有将客户端重定向到带有查询字符串的网址,那么您将无法访问javascript中的参数。
您可以使用addind [R]
将用户重定向到重写规则:
RewriteEngine On
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L,R]
答案 1 :(得分:0)
RewriteEngine On
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L]
工作原理:获取URI,例如/soccer/
。剥去前导/并将其与模式进行比较。在模式中,抓住所有内容(0个或更多字符),直到遇到/(不捕获/ here)。这被捕获到1美元,应该是足球。要求输入以/结尾。请注意,http://domain.com/soccer
将不匹配,因为它没有尾随/。您可能想要进行尾随/可选:
RewriteRule ^([^/]*)/?$ /index.html?sport=$1 [L]
现在您已成功匹配模式并获得$ 1,输出重写的URI,将足球替换为$ 1:
/index.html?sport=soccer
[L]
标志表示这是目前的最后一次重写规则。
请注意,您使用*作为模式中的重复次数。如果有人输入http://domain.com/
,它会匹配,您将获得一个空的$ 1,导致
/index.html?sport=
可能会破裂。您可能希望从*(0或更多匹配)更改为+(1个或更多匹配)。
索引实际上是index.php,还是其他一些脚本? HTML本身无法对查询字符串执行任何操作。你也可以在这里给出正确的文件名,而不是再进一步重写它。