我试图通过301设置网址,而我没有运气让这个工作。我想要做的是获取带有id参数的URL并将其转换为一个漂亮的干净URL。一个例子如下:
原始网址
/11/video_player.php?id=123
生成的网址
/lesson/123
有人可以帮我写这个永久的301条目吗?我已经从十几个不同的来源尝试了大约20种不同的方式,我必须错过这个。
答案 0 :(得分:0)
类似的东西:
RewriteRule /video_player\.php\?id=(\d+)$/ /lesson/$1 [R]
不确定是否需要但是在输入路径中转义.
和?
并不是一个坏主意,只是为了安全。
当您遇到令人讨厌的重写规则时,启用调试会非常有用,您可以通过添加以下标志来执行此操作:
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
显然可以将路径更改为您想要的位置。 RewriteLogLevel
中较高的数字会增加冗长度。请注意,此语法适用于2.x.对于2.4.x,语法已更改为:
LogLevel alert rewrite:trace3
有关详细信息,请参阅日志记录文档:http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
答案 1 :(得分:0)
将此代码放入DOCUMENT_ROOT/.htaccess
文件中:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} \s/11/video_player\.php\?id=([^\s&]+) [NC]
RewriteRule ^ lesson/%1? [R=302,L]
RewriteRule ^lesson/([^/.]+)/?$ /11/video_player.php?id=$1 [L,QSA,NC]