在./ www文件夹中放置.htaccess文件会使我的网站混乱

时间:2010-06-07 19:23:25

标签: php html apache .htaccess mod-rewrite

我现在正在玩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有什么遗漏?

如果您需要更多输入,请告诉我......

2 个答案:

答案 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)

这不是一个完整的答案,但会提供更多可以帮助您的信息。

  1. 您可以将选项放在同一行Options +FollowSymLinks -Indexes
  2. 并非所有主机都允许.htaccess,或者不允许所有.htaccess命令。这可能会导致问题和页面无效。
  3. 尝试注释掉所有内容(使用每行前面的#符号),然后从顶部开始,取消注释直到找到问题行。