2014-03-19 148 views
0

我有(可能)很容易修复的问题。我的简单.htaccess不工作,因为我想,我无法弄清楚发生了什么。.htaccess无法正常工作 - 变量

的.htaccess:

RewriteEngine On 
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L] 

然后,当我去http://domain.com/soccer/然后运行这一行控制台:window.location.search.replace("?", "");它给我什么,而应该给我sport=soccer完全一样,而我去`http://domain.com/index.html?sport=soccer它在做什么。 ..

这可能是一些容易,但htaccess的是一个总的奥秘,我

问题: 如何使重写工作,使当人们在

domain.com/soccer/ 

键入将工作完全为:

domain.com/index.html?sport=soccer 

一些简单的说明(非必要)将帮助很大,所以也许我终于能理解的.htaccess ..

欢呼

回答

0

如果您没有将客户端重定向到带有查询字符串的URL,那么您将无法访问javascript中的参数。 您可以addind [R]将用户重定向到您的重写规则:

RewriteEngine On 
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L,R] 
0
RewriteEngine On 
RewriteRule ^([^/]*)/$ /index.html?sport=$1 [L] 

工作原理:取URI,如/soccer/。剥离领先/并将其与图案进行比较。在模式中,抓住一切(0个或更多字符),直到碰到一个/(不捕获/这里)。这被捕获到1美元,并且应该是足球。要求输入端以/。请注意0​​不匹配,因为它没有跟踪/。你可能想使拖尾的/可选:

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本身不能对查询字符串做任何事情。你不妨在这里给出正确的文件名,而不是再一次重写。

+0

该索引实际上是一个索引。HTML,并且有一个预加载的JavaScript,它根据不同的运动预先加载不同的图像集(稍后用于画布上的一些像素操作)。 –