您是否可以看到以下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重写了地址,但没有按照我的意图 - 所以我的正则表达式一定有问题。
如果我能提供进一步的信息,请告诉我。
答案 0 :(得分:1)
试试这个
Options +FollowSymlinks
RewriteEngine on
RewriteBase /lombardpress-dev/text/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/]+) textdisplay.php?fs=$1 [NC]
使用重写cond,您不会再将文本display.php重定向到自身。 问题是[^ /] +匹配所有但/它匹配文本display.php
答案 1 :(得分:0)
删除目标网址中的前导斜杠:
试试这段代码:
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]
答案 2 :(得分:0)
摆脱目标前面的/
:
RewriteRule ([^/.]+) textdisplay.php?fs=$1 [NC]
# no slash here ----^