.htaccess通用mod_rewrite规则

时间:2012-01-27 11:21:55

标签: regex .htaccess mod-rewrite url-rewriting apache2

我有一个网站,我试图使用mod_rewrite来改变网址:

/directory/filename.phpdirectory/filename/

/directory/filename.php?id=7directory/filename/7/

/directory/filename.php?id=7&file_id=1directory/filename/7/1/

我无法计算出用于这些页面的正则表达式。这是整个.htaccess文件:

RewriteEngine On    # Turn on the rewriting engine

RewriteRule  ^(.*)/?$ /directory/$1 [L] #Rewrite a page without $_GET variables
RewriteRule  ^([^/]+)/([0-9]+)/?$ /directory/$1?id=$2 [L] #Rewrite a page with 1 $_GET variables
RewriteRule  ^([^/]+)/([0-9]+)/([0-9]+)/?$ /directory/$1?id=$2&file_id=$3 [L] #Rewrite a page with 2 $_GET variables

1 个答案:

答案 0 :(得分:2)

如果.htaccess位于directory文件夹中,那么directory/路径前缀将被剥离,您无需在重写规则中烦恼。

您可以使用以下内容:

RewriteEngine On    # Turn on the rewriting engine

RewriteRule  ^([^/.]+)/?$ $1.php [L] # rewrite without query string parameters
RewriteRule  ^([^/.]+)/(\d+)/?$ $1.php?id=$2 [L] # one parameter
RewriteRule  ^([^/.]+)/(\d+)/(\d+)/?$ $1.php?id=$2&file_id=$3 [L] # two parameters