【问题标题】:mod_rewrite works fine on linux but returns forbidden on windows 10mod_rewrite 在 linux 上工作正常,但在 windows 10 上返回禁止
【发布时间】:2022-08-22 13:28:26
【问题描述】:

我正在使用 Windows 10 上的 wampserver 进行本地开发。
在那之后,我让我的脚本生效,它工作正常,但几天后我实现了 url 重写。
我的脚本在实时服务器上运行良好。
现在我想做一些改变,所以我把它放在本地进行开发,我得到了禁止的在我的本地主机上。

这是重写规则

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\\.php -f
RewriteRule ^(.*)/([-\\w]+)/(\\d+)/([-\\w]+)$ $1.php?cat_name=$2&vid=$3&vbiz_name=$4 [NC,L]
RewriteRule ^(.*)/([-\\w]+)/(\\d+)$ $1.php?cat_name=$2&page=$3 [NC,L]
RewriteRule ^(.*)/([-\\w]+)$ $1.php?cat_name=$2 [NC,L]
RewriteRule ^(.*)/$ $1.php [NC,L]

# Error Documents
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ 404.php [L]

RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ 500.php [L]
</IfModule>

这是我正在使用的虚拟主机详细信息。

<VirtualHost *:80>
    ServerName devproject
    DocumentRoot \"g:/dev-project\"
    <Directory  \"g:/dev-project/\">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

索引页面工作正常...
请帮帮我。。

  • 提供“禁止”回复的请求是什么,您的 http 服务器的日志文件对该请求有什么说明?
  • 仅供参考:RewriteConds 仅适用于紧随其后的 RewriteRule。因此,当请求的 URL 与现有文件或文件夹匹配时,这里只有您的第一条规则具有不应应用的限制。但是,如果您发出的请求与第二条规则 ^(.*)/([-\\w]+)/(\\d+)$(或下一个规则)的模式匹配,则即使存在匹配的文件或文件夹,该请求也会被重写。 (在某些情况下可能是人们想要的,但通常不是。)

标签: php apache .htaccess mod-rewrite wampserver


【解决方案1】:

解决...
我刚刚添加了新行

Options FollowSymLinks

刚过

RewriteEngine on

它可以在 Windows 和 linux 上运行, 新规则看起来像

<IfModule mod_rewrite.c>
RewriteEngine on
Options FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)/([-\w]+)/(\d+)/([-\w]+)$ $1.php?cat_name=$2&vid=$3&vbiz_name=$4 [NC,L]
RewriteRule ^(.*)/([-\w]+)/(\d+)$ $1.php?cat_name=$2&page=$3 [NC,L]
RewriteRule ^(.*)/([-\w]+)$ $1.php?cat_name=$2 [NC,L]
RewriteRule ^(.*)/$ $1.php [NC,L]

# Error Documents
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ 404.php [L]

RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ 500.php [L]
</IfModule>

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2015-03-13
    相关资源
    最近更新 更多