我有一个分类广告网站。每个分类最初都是这样链接的:
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
我需要知道或做的其他事情吗?
由于
答案 0 :(得分:3)
看起来你需要这样的东西:
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)标志停止重写过程,因此它不会再应用此规则重写的请求。
答案 1 :(得分:0)
您需要添加规则本身。需要正则表达式=)
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文件。