我现在正在玩mod_rewrite,并已成功启用它。
但是,我需要在var / www /中放入一个htaccess文件以实现我想要的,这就是简单地重命名Urls ... 当我把它放在我的网站变得非常奇怪,没有什么基本上工作...
我需要将任何代码放入htaccess文件才能使事情正常进行吗?
这是我到目前为止的htaccess文件:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/ad\.php
RewriteRule ^(.*)$ ad.php?ad_id=$1 [L]
我的DocumentRoot也设置为var / www /,我的整个网站根目录都在那里......(index.html等等)......
我对htaccess有什么遗漏?
如果您需要更多输入,请告诉我......
答案 0 :(得分:1)
我怀疑你的css文件,js或图像都没有被加载。此外,您的链接都不起作用。如果是这样,问题可能在RewriteRule中导致基本上该规则告诉apache将所有请求传递给ad.php
您需要对RewriteRule进行微调,以便只有广告链接受到规则的影响。
首先,通过像这样扩展RewriteRule:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} !^/ad\.php
RewriteRule ^(.*)$ ad.php?ad_id=$1 [L]
我添加的这3行告诉apache只有在请求的文件名不是目录,现有文件或符号链接时才应用规则 - 这应该处理静态内容,例如css和图片。如果你所链接的其他页面指向的,也是物理上位于服务器的硬盘上(普通的html或php文件),应该重新开始工作。
但是,正如我已经在你的这个问题上所说的那样(Little mod_rewrite problem),你需要对这条规则进行微调,这样只有规则才能满足广告,而不是别的。
答案 1 :(得分:0)
这不是一个完整的答案,但会提供更多可以帮助您的信息。
Options +FollowSymLinks -Indexes