Php 改写为;漂亮的网址;?
这是我努力实现的一个例子 原始URL:Php 改写为;漂亮的网址;?,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,这是我努力实现的一个例子 原始URL: http://subdomain.domain.com/company.php?test=TES001 Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2 ErrorDocument 404 / 重写的URL: http://subdomain.domain.com/company/AAA001
http://subdomain.domain.com/company.php?test=TES001
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2
ErrorDocument 404 /
重写的URL:http://subdomain.domain.com/company/AAA001
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2
ErrorDocument 404 /
我认为你的重写规则写得不对,有点倒退,应该是这样的
RewriteRule company.php?test=([A-Z]+)([0-9]+) /company/AAA$2
也就是说,您首先给出要匹配的模式,然后将其重写为。。。但是,我不确定您是否能够像这样匹配GET参数…我不是mod_重写专家,但是:
RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2
不应匹配以下表达式:
/company/foo/bar/
并将其映射到:
/company.php?foo=bar
您的URL中只有:
/company/foo
Apache日志在说什么?
你的.htaccess真的被读取了吗?
你重新加载Apache配置了吗?(记不清是否需要它)如果希望
/company.php?test=AAA001
重定向到/company/AAA001
,请执行以下操作:
RewriteCond %{QUERY_STRING} test=([A-Z]+[0-9]+)
RewriteRule ^company.php /company/%1? [R]
如果希望将/company/AAA001
重写为/company.php?test=AAA001
,请执行以下操作:
RewriteRule company/([A-Z]+[0-9]+)$ /company.php?test=$1
你点错菜了。。。紧跟在“RewriteRule”之后的是您想要的URL的形式(即您的干净URL),带有正则表达式,表示该URL中可能发生的任何更改。之后,您就有了URL的路径,加上找到的值(即$1、$2等)的正则表达式标记
正确的。不能像这样匹配查询字符串参数。重写规则只查看路径(最多,但不包括问号)。要匹配查询字符串,可以使用
RewriteCond%{query\u string}
。看到我的答案了。谢谢,效果很好