【问题标题】:httpd.conf configured mod_rewrite don't work correctlyhttpd.conf 配置的 mod_rewrite 不能正常工作
【发布时间】:2015-01-28 11:42:22
【问题描述】:

首先,我在互联网(包括stackoverflow)上搜索了这个问题,但没有找到任何解决方案。

我配置了我的 httpd.conf:

  • 取消注释LoadModule rewrite_module modules/mod_rewrite.so
  • AllowOverride All

我将 .htaccess 放在我的 htdocs 目录中,代码如下:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^apresentacao/?$ /apresentacao.php [NC,L]
    RewriteRule ^consultoria/?$ /consultoria.php [NC,L]
    RewriteRule ^software+escolar/gestao+escolar/?$ /escolar.php [NC,L]
</IfModule>

我在.htaccess 上做错了什么?

已编辑。

我尝试访问以下网址:www.mydomain.com/software+escolar/gestao+escolar/,但它不起作用。

我需要使用字符 +(加号)来分隔 url 的名称。

我仍然无法访问我在.htaccess 中输入的任何页面。

【问题讨论】:

  • 您尝试了哪个网址?你得到了什么错误?它究竟是如何“不工作”的? (查看error.log。同时删除&lt;IfModule&gt; 封装。)
  • 您好@mario,我尝试了myurl/apresentacao/,但无法正常工作,仅使用myurl/apresentacao.php。我放了另一个网址并更新了问题!谢谢你的回答。
  • 举一个完整的URL为例,说明目录结构,你的DOCUMENT_ROOT是哪个,如果.htaccess确实在那儿。
  • @mario ,整个 url 将是 www.mydomain.com/software+escolar/gestao+escolar/ 以访问页面 escolar.php。我的目录结构很简单,根文件夹有escolar.php这个文件。

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

我只会回答你提供了足够详细信息的问题部分:

RewriteRule ^software+escolar/gestao+escolar/?$ /escolar.php [NC,L]

虽然您的输入 URL 可能使用 +%20 来表示空格,但 RewriteRule 会看到实际的虚拟路径名。那就是 mod_rewrite 应该匹配那里的文字空间。正则表达式中的+ 仍然是量词。

所以你应该使用的是:

RewriteRule ^software\sescolar/gestao\sescolar/?$  ...

或者甚至只是一个转义空间 \␣ 代替 \s 那里。

【讨论】:

  • 如果您想进一步具体化问题细节,请编辑您的问题。不要在此处添加 cmets。
  • 它还没有被调用。我把它放在我的.htaccess 上,地址www.mydomain.com/software+escolar/gestao+escolar/ 不起作用。我应该配置其他东西吗?
  • 问题解决了!在读取其他文件 RewriteRule 之前,我将 [L] 放入文件的读取。谢谢@mario。
猜你喜欢
  • 2022-10-14
  • 2014-03-02
  • 1970-01-01
  • 2012-08-05
  • 2017-12-27
  • 2012-11-04
  • 1970-01-01
  • 2011-06-28
相关资源
最近更新 更多