Propper .htaccess重写mod

时间:2012-09-11 01:28:51

标签: php .htaccess

我目前正在使用.htaccess从

重写我的网址

example.com/mixtape.php?id=(WHATEVER#)
...到...
example.com/m/(WHATEVER#)

我用来完成的代码如下:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^m\/([^/\.]+)/?$ mixtape.php?mixid=$1 [L]

我想要实现的下一件事就是改写我的

example.com/edit-mixtape.php?id=(WHATEVER#)
...到...
example.com/m/(WHATEVER#)/ edit


编辑:“WHATEVER#”是我正在编辑的Mixtape的ID。通常我会使用“$ _GET ['id']”来查看我所指的mixtape,然后我会获取与该数字相关的所有内容。

那里有没有人可以帮我成功写一个正确的重写mod?

2 个答案:

答案 0 :(得分:2)

根据您的评论,我也会更改您的原始规则,仅允许使用数字:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^m/(\d+)/edit/?$ edit-mixtape.php?mixid=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^m/(\d+)/?$ mixtape.php?mixid=$1 [L]

顺便说一句,我可能会使用一般规则并将两个url写入同一个php文件并处理控制器中的操作。

答案 1 :(得分:1)

您可以使用之前的规则,但只需将edit附加到正则表达式:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^m\/([^/\.]+)/edit/?$ edit-mixtape.php?mixid=$1 [L]

请注意,您的原始规则包含查询字符串mixid=,而您的示例说明id=