Javascript 如何重写url以删除问号

Javascript 如何重写url以删除问号,javascript,php,url,url-rewriting,Javascript,Php,Url,Url Rewriting,我有一个查询字符串,它根据用户在url中的问号后输入的内容更改页面内容 http://mysite.subdomain.com/?3 将加载分配给ID 3的内容 http://mysite.subdomain.com/?34 加载指定给34的内容 我需要在.htaccess文件中输入什么,以便当用户转到 http://mysite.subdomain.com/1234 它加载用户输入时将加载的内容 http://mysite.subdomain.com/?1234 基本上,我想清理url

我有一个查询字符串,它根据用户在url中的问号后输入的内容更改页面内容

http://mysite.subdomain.com/?3
将加载分配给ID 3的内容

http://mysite.subdomain.com/?34
加载指定给34的内容

我需要在.htaccess文件中输入什么,以便当用户转到

http://mysite.subdomain.com/1234
它加载用户输入时将加载的内容

http://mysite.subdomain.com/?1234
基本上,我想清理url并删除问号。谢谢(我意识到这是一个基本问题)

试试这个

RewriteRule ^([a-zA-Z0-9\-]+)$ index.php?id=$1 [QSA,L,NC]
无访问权限 因为javascript已经处理URL部分,所以不需要htaccess。javascript将查询字符串(例如
?OdfgzaBv2qY
)移除问号,并将剩余的
OdfgzaBv2qY
作为ID放入iFrame中

由于javascript使用的是
window.location.search
,脚本希望在URL中的问号之后设置变量。因此,www.mysite.com/?3将起作用,但当您访问www.mysite.com/3时,它不会起作用,因为
窗口.location.search
保持为空

htaccess之所以不是解决方案,是因为htaccess是在服务器端处理的,javascript是在客户端处理的。即使htaccess正在工作,并且您被重定向到
index.html?3
,javascript仍然会看到www.mysite.com/3 URL,而不是最终请求。因此,基本上:服务器理解变量在后台被设置为?3,但是javascript可以看到用户看到的内容:没有问号的友好URL

编辑-您可以尝试一下吗: 当然index.php?id=1应该替换为执行请求所使用的任何页面

简短的解释:

  • 该规则以“^”开头,然后在基本URL后面查找一个数值,因此,如果您的规则是在最后一个URL之后开始的/
  • $定义规则正则表达式的结尾
  • index.php?id=$1是必须加载的URL(其中$1是参数1:
    ([0-9]+)
  • [L]是一个标志“Last”,表示htaccess不应查找其他适用的规则
请注意,这不适用于。。因为结尾的斜杠不匹配。这可以通过以下方式实现:

RewriteRule ^([0-9]+)/$ $1 [L,R=301]
RewriteRule ^([0-9]+)$ index.php?id=$1 [L]

首先查看是否有斜杠,如果有,则重定向到“无斜杠”url(R=301:Redirect 301=permanent Redirect),然后匹配第二条规则并执行请求。

Look up
mod_rewrite
,非常简单,在这种情况下不需要。因为它在所有情况下都是整数。这也使得不需要NC标志。QSA是可选的,但通常不使用此标志,因为这样做的目的是重写所有查询字符串附件;-)@谢谢,我在这方面不在行。我只是需要检查我的文件来写这篇文章。我的代码中没有使用任何php,都是javascript。网址是www.site.sub.com/index.html?3我会把你的代码改成:
RewriteRule^([a-zA-Z0-9\-]+)$index.html?id=$1[QSA,L,NC]
我的代码中没有使用任何php,都是javascript。网址是www.site.sub.com/index.html?3我能把你的代码改成:
IfModule mod_rewrite.c>RewriteEngine on RewriteBase/RewriteRule^([0-9]+)$index.html?id=$1[L]
这是正确的,也许你甚至可以删除
id=
部分:index.html?$1id,你可以尝试使用和不使用
id=
?是的,事实上,奇怪的是,如果没有你的.htaccess代码,我的网站似乎可以工作,如果你只输入site.com/3,它只是嵌入的视频变得未定义,所以这里是我的结果。你是一个绝对的传奇人物,代码工作完美。然而,由于某些原因,该网站似乎只允许代码与上载的.htaccess文件一起工作。也许我之前说www.site.com/3在没有.htaccess文件的情况下工作时犯了一个错误,也许这只是因为我的托管速度慢(便宜)。无论哪种方式,它都是完美的。非常感谢。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteRule ^([0-9]+)$ index.php?id=$1 [L]
</IfModule>
RewriteRule ^([0-9]+)/$ $1 [L,R=301]
RewriteRule ^([0-9]+)$ index.php?id=$1 [L]