【问题标题】:I Can't make RewriteBase and RewriteRule to work properly我无法使 RewriteBase 和 RewriteRule 正常工作
【发布时间】:2023-03-03 20:20:01
【问题描述】:

我的结构如下:

我的网站/clubeadv/

在该文件夹中,我有一个名为 site.php 的文件,它接收参数 id。

所以,物理路径是:

mywebsite/clubeadv/site.php?id=something

但我希望它看起来像这样:

mywebsite/clubeadv/site/something

(其中“某事”是我的参数)

如何配置 .HTACCESS 文件?

我尝试了以下方法:

Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^site/(.*)$ site.php?id=$1

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 您的 DOCUMENT_ROOT 是 mywebsite 还是 mywebsite/clubeadv ?另外,您要处理的浏览器中的 URI 是什么?
  • 包含此代码的 .htaccess 在哪里?
  • 我尝试将 .htaccess 放入 clubeadv 文件夹中
  • 以及在 mywebsite 文件夹中
  • 我希望它是这样的:www.website.com/mywebsite/site/abc (www.website.com/mywebsite/site.php?id=abc)

标签: php apache .htaccess url-rewriting


【解决方案1】:

尝试删除 RewriteBase 并将 .htaccess 放在“clubeadv”文件夹中。如果您的 .htaccess 位于“mywebsite”文件夹的根目录下,那么您可以保留 RewriteBase 但使用 RewriteRule clubeadv/site/(.*)$ clubeadv/site.php?id=$1

无论哪种方式,我很确定“^site”会导致它在您的情况下查找 mywebsite/site/something。

【讨论】:

  • 它没有用。 .htaccess 文件应该放在哪里?我在 mywebsite 文件夹和 clubeadv 文件夹下都试过了。
  • 当您只重写 clubeadv 文件夹时 - 首先将 .htaccess 放在那里。您还确定在您的网络主机上允许 .htaccess 吗?尝试添加一个带有随机非法字符串的 htaccess,就像其中的 AAA BBB CCC 一样。如果在您尝试访问该站点时导致内部服务器错误,则启用 .htaccess,否则禁用 .htaccess。
  • 我尝试了随机非法字符串的想法,但一无所获。所以我猜它被禁用了,我在哪里启用它?
  • 与您的网络托管公司交谈,他们是唯一能够告诉您是否可以使用 htaccess 覆盖以及如何在他们的服务器上启用它的公司。出于安全原因,它通常被禁用。
【解决方案2】:

看起来像你想要的:

RewriteEngine On
RewriteBase /clubeadv/
RewriteRule . site.php?id=%{REQUEST_URI}

这会将诸如 www..com/clubeadv/abc/edf 之类的 URL 处理为 site.php?id=/abc/edf。

【讨论】:

    【解决方案3】:

    显然问题出在服务器配置上。要启用 .htaccess 文件,我们必须:

    • 已加载以下模块:

    LoadModule rewrite_module modules/mod_rewrite.so

    • 在“目录”标签下为需要的网站启用覆盖:

      允许全部覆盖

    感谢那些回答的人。

    【讨论】:

      猜你喜欢
      • 2016-09-17
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2012-02-19
      • 1970-01-01
      • 2016-12-31
      相关资源
      最近更新 更多