【问题标题】:.htaccess has been read but rewrite url is not working.htaccess 已被读取,但重写 url 不起作用
【发布时间】:2016-04-08 16:53:03
【问题描述】:

httpd.conf 中用于重写的模块如下:

LoadModule rewrite_module modules/mod_rewrite.so

.htaccess 的路径:

c:\wamp\www\magentodev\.htaccess

因此在 .htacess 我有这个:

<IfModule mod_rewrite.so>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteCond %{REQUEST_URI} ^/boombottleh2o\+?$
    RewriteRule (.*) /gu/boombottleh2o.php [NC,L,QSA]

//some other ones

</IfModule>

我希望尝试:

localhost/magentodev/boombottleh2o

代替:

localhost/magentodev/gu/boombottleh2o.php

它应该可以工作,因为它正在生产而不是本地主机,我有 wamp 服务器 apache,这是一些配置:

在 C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf:

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require local
</Directory>

Anu 说的不正确,所以我更改了 C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf 到:

<Directory "C:/wamp/www/">
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>

<VirtualHost *:80>
ServerAdmin localhost
DocumentRoot C:/wamp/www/
ServerName localhost
</VirtualHost>

我不知道出了什么问题,感谢任何帮助

【问题讨论】:

  • RewriteBase /gu/ 也许?
  • 我不认为是这种情况我认为这是一些配置,因为我说我在生产中没有任何问题它工作正常,我也尝试了你的建议,但没有工作跨度>
  • 正如其他人在答案中提到的那样,RewriteCond 与您输入的 URL 不匹配,这使得整个事情成为死代码。
  • @covener 在生产中同样的作品

标签: php apache .htaccess mod-rewrite


【解决方案1】:

让你的C:/wamp/www/magentodev/.htaccess 像这样:

ErrorDocument 404 default
Options +FollowSymLinks
RewriteEngine on

RewriteRule ^boombottleh2o(/.*)?$ gu/boombottleh2o.php [NC,L]

mod_rewrite 参考资料:

【讨论】:

  • 我已经关注了符号链接和重写引擎,我已经将重写规则更改为您建议的内容,我尝试了 url,它不起作用
  • “不工作”无助于解决您的问题。显示当前配置、输入 URL 和 RewriteLog。
  • 我做了,它确实验证了
  • @covener 请说明您需要查看的内容。在哪里可以找到重写日志?
  • 如您所见 DocumentRoot C:/wamp/www/magentodev
【解决方案2】:

我在装有 Windows 7 的 Wamp 服务器 2.5 版上遇到了类似的问题。

您的 .htaccess 文件看起来很可靠,但您的 vhost.conf 确保覆盖所有边界并在文件开头添加正则表达式 *

所以不是


你得到

这消除了 localhost,因为您已经将其设置为 ServerName 并且您可以在下添加别名

这听起来很明显,但是您是否尝试过使用 wampmanager 进行任何操作?

点击 Wamp 图标,然后是 Apache,然后是模块,向下滚动一点,确保重写模块旁边有一个检查。 这为我解决了问题!

祝你好运,Wamp 总是比看起来更棘手

【讨论】:

  • 我试过了,不行,我也检查了模块,有检查,安装了。
【解决方案3】:

看起来您的 RewriteCond 希望匹配 http://localhost/boombottleh2o/ 而不是您使用的 URL localhost/magentodev/boombottleh2o,因为 REQUEST_URI 字符串将包含 /magentodev/boombottleh2o,但您的正则表达式希望匹配字符串开头的 /boombottleh2o

要修复这种情况,您应该需要删除开头的克拉^

您还在正则表达式末尾转义 + 字符。 \+? 将尝试匹配 + 符号 0 次或一次。我不确定这是否是故意的,但如果您使用 .*? 代替,您将始终匹配对 /boombottleh20/ 文件夹的请求,即使请求更深入或包含文件类型

Tl;dr - 我认为你的 RewriteRule 应该是这样的:

RewriteCond %{REQUEST_URI} /boombottleh2o.*?$

【讨论】:

    猜你喜欢
    • 2015-07-17
    • 2015-02-03
    • 2014-08-08
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多