.htaccess mod rewrite 适用于 WAMPP 但不适用于 XAMPP
Posted
技术标签:
【中文标题】.htaccess mod rewrite 适用于 WAMPP 但不适用于 XAMPP【英文标题】:.htaccess mod rewrite works on WAMPP but not XAMPP 【发布时间】:2020-01-04 23:47:31 【问题描述】:我正在尝试编写我的.htaccess
文件,以便网站的所有页面(index.php、sports.php、team.php 和 about.php)都显示为domain/index
。 team.php
偶尔也会包含一个 $_GET
变量,我试图将其显示为 domain/team/getvariable
。我想出了以下 .htacces:
Options +FollowSymLinks
DirectoryIndex index.php team.php sports.php about.php
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI (.+)/$
RewriteRule ^ %1 [L,R] # <- for test, for prod use [L,R=301]
#RewriteRule ^s/(.*)$ ./team.php?s=$1
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^([^\.]+)$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
这符合我对 WAMPP 的所有要求,但是使用 XAMPP 托管网站的行为有所不同;重定向到team/getvariable
成功但抛出 404 错误,其余部分运行良好。您还可以看到,我已经尝试了另一种方法,但它的行为方式与当前行相同。我做错了什么?
解决方案
我将最后一行更改为
RewriteRule ^(.*)$ team.php?s=$1 [NC]
【问题讨论】:
【参考方案1】:您正在将/team/variable
重写为/team/variable.php
。我猜这会发生你的 404 错误。
所以我认为您想重写为/team.php?v=variable
之类的东西?那么这应该工作:
RewriteRule ^([^/]+)/([^/]+)/$ $1.php?v=$2
为什么它适用于 WAMPP 是另一个问题......
【讨论】:
我想重写/team.php?s=variable
-> /team/variable
不幸的是,您的解决方案也会抛出 404(将 v 更改为 s 后)
我从你的规则中取出了规则的第一部分,没有检查它。它匹配带有结尾斜杠的 url。所以/team/variable/
应该可以工作。如此简单地删除 $ 之前的最后一个 / --> RewriteRule ^([^/]+)/([^/]+)$ $1.php?v=$2
以上是关于.htaccess mod rewrite 适用于 WAMPP 但不适用于 XAMPP的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess mod rewrite 适用于 WAMPP 但不适用于 XAMPP
.htaccess 适用于 Apache 服务器,但不适用于 FTP 目录
.htaccess 适用于 Apache 服务器,但不适用于 FTP 目录