0

你能看出以下 apache 重写规则有什么问题吗:

这是在我的 .htaccess 文件中名为“text”的文件夹中的一个子目录,localhost/lombardpress我有以下规则

Options +FollowSymlinks
RewriteEngine on
RewriteRule ([^/]+) /textdisplay.php?fs=$1 [NC]

我期待这个输入:

http://localhost/lombardpress-dev/text/lectio1

重写为:

http://localhost/lombardpress-dev/text/textdisplay?fs=lectio1

但相反,我收到 404 错误。

在此服务器上未找到请求的 URL /textdisplay.php。

在我看来,RewriteRule 已经重写了地址,但不是我想要的——所以我的正则表达式一定有问题。

让我知道我是否可以提供更多信息。

4

3 回答 3

1

试试这个

Options +FollowSymlinks
RewriteEngine on
RewriteBase /lombardpress-dev/text/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/]+) textdisplay.php?fs=$1 [NC]

使用该重写条件,您不会再次将 textdisplay.php 重定向到自身。问题是 [^/]+ 匹配除 / 之外的所有内容,因此它甚至匹配 textdisplay.php

于 2013-10-23T21:51:26.480 回答
0

删除目标 URL 中的前导斜杠:

试试这个代码:

Options +FollowSymlinks
RewriteEngine on

# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ textdisplay.php?fs=$1 [NC,L,QSA]

参考:Apache mod_rewrite 简介

于 2013-10-23T21:36:25.583 回答
0

摆脱/目标前面的:

RewriteRule ([^/.]+) textdisplay.php?fs=$1 [NC]
# no slash here ----^
于 2013-10-23T21:36:30.247 回答