无 htaccess
由于您的 javascript 已经处理了 URL 部分,因此您不需要 htaccess。javascript 获取查询字符串,例如?OdfgzaBv2qY
,删除问号并将剩余OdfgzaBv2qY
的作为 ID 放入 iFrame。
由于 javascript 正在使用window.location.search
脚本,因此希望在 URL 中的问号之后设置变量。所以 www.mysite.com/?3 会起作用,但是当您访问 www.mysite.com/3 时它不会,因为它window.location.search
仍然是空的。
htaccess 没有解决方案的原因是因为 htaccess 正在服务器端处理,而 javascript 正在客户端处理。即使 htaccess 正在工作,并且您被重定向到index.html?3
javascript,仍然会看到 www.mysite.com/3 URL 而不是最终请求。所以基本上:服务器知道变量在后台设置为 ?3,但 javascript 看到用户看到的内容:没有问号的友好 URL。
编辑 - 你可以试试这个:
<script type="text/javascript">
//GET DATA FROM URL ...http://www.mysite.com/YOUTUBE_ID
var DATA = window.location.pathname.replace("/", "");
window.onload = function() {
var YouTube = document.getElementById('YouTube');
YouTube.src = "http://www.youtube.com/embed/" + DATA;
};
</script>
window.location.pathname 应该采用/3
并替换/
. 而 window.location.search?3
参与其中并替换?
如果有人需要启动 htaccess
一个基本的 .htaccess 文件是:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9]+)$ index.php?id=$1 [L]
</IfModule>
当然 index.php?id=1 应该替换为您用来执行请求的任何页面。
一个简短的解释:
- 规则以 ^ 开头,然后在基本 URL 后面查找数值,因此如果您有http://www.domain.com/42,则规则在最后一个 / 之后开始
- $ 定义规则正则表达式的结尾。
- index.php?id=$1 是必须加载的 URL(其中 $1 是参数 1:
([0-9]+)
)
- [L] 是一个标志“Last”,表示 htaccess 不应该寻找其他适用的规则
请注意,这不适用于http://www.domain.com/49/ .. 因为末尾的斜线不匹配。这可以通过以下方式完成:
RewriteRule ^([0-9]+)/$ $1 [L,R=301]
RewriteRule ^([0-9]+)$ index.php?id=$1 [L]
这首先查看是否有斜杠,如果有则重定向到“无斜杠”url(R=301:重定向 301 = 永久重定向),然后匹配第二条规则并执行请求。