【问题标题】:Placing .htaccess file in var/www folder messes my website up将 .htaccess 文件放在 var/www 文件夹中会使我的网站混乱
【发布时间】:2010-06-07 19:23:24
【问题描述】:

我现在正在玩 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 缺少什么?

如果您需要更多信息,请告诉我...

【问题讨论】:

  • “网站变得非常奇怪,基本上没有任何效果..” - 像 HTTP 500 错误?你所有的 div 都变成了表格?神奇的龙飞出你的显示器? (提示:要具体一点)
  • 嗯,你将每个页面都重定向到ad.php...这是你想要的吗?
  • 好吧,告诉那些你问过这个问题的人:stackoverflow.com/questions/2991938/…,然后忘记根据哪些规则来判断某物是否是广告......
  • 虽然会选择龙(假设他们可以逃脱监视器并保持其完好无损,但有限制......)
  • 你检查过 Apache 错误日志吗?

标签: php html apache .htaccess mod-rewrite


【解决方案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) 上已经说过的那样,您需要微调该规则,以便只有广告符合该规则,而没有其他任何内容。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多