httpd.conf配置mod_rewrite不能正常工作

时间:2015-01-28 11:42:22

标签: php regex apache .htaccess mod-rewrite

首先,我在网上(包括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/但它无法正常工作。

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

我仍然无法访问我放在.htaccess

中的任何页面

1 个答案:

答案 0 :(得分:0)

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

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

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

所以你应该使用的是:

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

甚至只是一个转义空间\␣代替\s