2012-06-18 149 views
0

我已经列出了状态和一个php文件,它将列出该州的所有城市。以URL参数/common.php/?state=Texas并列出所有城市。 点击城市后,网址为/common.php/?city=Alanreed&state_code=TX,并显示城市信息。.htaccess干净的网址

我想格式化使用的.htaccess像国家应采取state_name.htmleg. Texas.html和城市名或者Texas/sugar_land.htmltx/sugar_land.html我怎样才能做到这一点使用PHP和.htaccess中的网址?

回答

1
RewriteEngine On 
RewriteRule ^(.*)/(.*).html$ common.php/?state=$1&city=$2 [L] 
RewriteCond %{REQUEST_URI} !^(.*/)?index\.html$ [NC] 
RewriteRule ^(.*).html$ common.php/?state=$1 [L] 

\w{2}装置2个字字符,因此它被重写为一个状态代码,所述第二规则是重写全州名,第三是重写的状态。

+0

完成后我的索引文件没有打开。请大家帮忙,我对.htaccess知之甚少。 – Vins

+0

是否启用了mod重写?你的意思是不开放,有没有错误? – Jeroen

+0

是启用它。以前我写过一个规则来执行.html文件,如.php AddType application/x-httpd-php .php .htm .html哪个工作正常。添加这两个规则后,它给服务器错误。 – Vins

0

尝试是这样的:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteRule ^([a-z]{2})\.[hH][tT][mM][lL]?$ common\.php\?state_code=$1 
    RewriteRule ^([a-zA-Z]+)\.[hH][tT][mM][lL]?$ common\.php\?state=$1 

    RewriteRule ^([a-z]{2})/([_a-zA-Z]+)\.[hH][tT][mM][lL]?$ common\.php\?state_code=$1&city=$2 
    RewriteRule ^([a-zA-Z]+)/([_a-zA-Z]+)\.[hH][tT][mM][lL]?$ common\.php\?state=$1&city=$2 
</IfModule> 

也应该tx.htm 工作,这是假设你的Apache已经启用了mod_rewrite。