htaccess重写规则为301

时间:2014-08-15 18:56:40

标签: apache .htaccess mod-rewrite redirect

我试图通过301设置网址,而我没有运气让这个工作。我想要做的是获取带有id参数的URL并将其转换为一个漂亮的干净URL。一个例子如下:

原始网址

/11/video_player.php?id=123

生成的网址

/lesson/123

有人可以帮我写这个永久的301条目吗?我已经从十几个不同的来源尝试了大约20种不同的方式,我必须错过这个。

2 个答案:

答案 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]