小小的mod_rewrite问题

我有一个分类网站。 每个分类都是这样链接的:

mydomain.com/ad.php?ad_id=Bmw_M3_M_tech_113620829 

我应该使用什么RewriteRule来使这个链接看起来像:

  mydomain.com/Bmw_M3_M_tech_113620829 

另外,我需要添加到我的.htaccess文件? 这是我迄今为止:

 Options +FollowSymLinks Options +Indexes RewriteEngine On RewriteBase / 

而且我刚刚启用了mod_rewrite,它在我的Ubuntu服务器上首先被禁用,方法是:

  a2enmod rewrite 

还有什么我需要知道或做的?

谢谢

看起来你需要这样的东西:

 RewriteEngine On RewriteCond %{REQUEST_URI} !^/ad\.php RewriteRule ^(.*)$ ad.php?ad_id=$1 [L] 

这应该将mydomain.com/Bmw_M3的请求重写为mydomain.com/ad.php?ad_id=Bmw_M3

RewriteCond排除了对ad.php直接请求被重写。 RewriteRule只会在mydomain.com/之后替换$1[L] (last)标志将停止重写过程,以便不会对由此规则重写的请求进行更多重写。

您需要添加规则本身。 需要regex =)

 RewriteRule ([a-zA-Z0-9_]+) ad.php?ad_id=$1 

当然,这个正则表达式应该根据您传递的广告ID进行微调 – 告诉广告ID和类似的字符。 例如,如果所有广告ID均以下划线和9位数字结尾,如下所示:

 RewriteRule ([a-zA-Z0-9_]_[0-9]{9}) ad.php?ad_id=$1 

哦,还有,启用mod_rewrite后重新启动apache。 确保AllowOverride没有设置为None,在这种情况下,apache将忽略目录中的.htaccess文件。