用apache重写规则不起作用

时间:2016-02-04 18:50:47

标签: mod-rewrite url-rewriting rewrite

我尝试通过.htaccess制定特定的重写规则,但我需要帮助,它不起作用。

这是我的网址:     的 http://mywebsite.net/aaa-bbbb/cccc

aaa =动态参数([a-z])
bbb =动态参数([a-z])
cccc =动态参数但是optionnal([a-z])

我想要重写用户这个网址:
http://mywebsite.net/mydir/ccc?x=aaa&y=bbbb **

url仍然会在标签栏上显示http://mywebsite.net/aaa-bbbb/cccc

我试试这个      RewriteRule ^([a-z] +) - ([a-z] +)/([a-z] +)$ mydir / $ 3 [L]

但它不起作用

thx!

1 个答案:

答案 0 :(得分:0)

将请求重写为

http://mywebsite.net/aaa-bbbb/cccc

内部到

/mydir/ccc?x=aaa&y=bbbb

你需要这样一个重写规则:

RewriteEngine on
RewriteRule ^([a-z]+)-([a-z]+)/([a-z]+)$ /mydir/$3?x=$1&y=$2 [L]

注意:上述规则具有在http服务器主机配置中使用的语法。如果您确实想要使用.htaccess样式文件,则需要使用稍微修改过的语法,因为这些文件适用于 relative 路径:

RewriteEngine on
RewriteRule ^([a-z]+)-([a-z]+)/([a-z]+)$ mydir/$3?x=$1&y=$2 [L]

您可以在重写目标中发现缺少的/.htaccess样式文件必须驻留在包含mydir文件夹的文件夹中才能生效。此外,必须在http服务器配置中启用对此类文件的解释。

一般说明:.htaccess样式文件非常容易出错,难以调试,而且真的会使http服务器无效。它们仅作为访问http服务器主机配置的最后一个选项提供。例如,对于作弊共享主机提供商。通常,总是更喜欢将此类规则放在主机配置中。