我有一个分类网站。 每个分类都是这样链接的:
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文件。