在PHP中使用RewriteEngine读取文件

时间:2014-09-11 07:40:42

标签: php apache .htaccess

最近我正在制作一个php应用程序,我希望对我的文件进行一些更改 所以我使用.htaccess和RewriteEngine,当我想运行我的应用程序时,它说404 这是我的代码,我试着说404!

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^access/(\d+)*$ show.php?address=$1&login=0

例如我的原始地址:
www.ex.com/show.php?address=5411496bc2b6c&login=0
我想将其改为:
www.ex.com/access/5411496bc2b6c
这是我的问题我在.htaccess做错了吗?

2 个答案:

答案 0 :(得分:1)

在你的规则中:

RewriteRule ^access/(\d+)*$ show.php?address=$1&login=0

应该是:

RewriteRule ^access/([a-z0-9]+)$ show.php?address=$1&login=0

(\d+)表示数字,因为您似乎需要数字+较低的字母字符吗?

同样SCRIPT_FILENAME将匹配执行脚本文件名,因此它永远不会是目录,您也将重写真实的现有目录,而是使用REQUEST_URIREQUEST_FILENAME

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

这对我有用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^access/([a-z0-9]+)$ show.php?address=$1&login=0 [L]

答案 1 :(得分:1)

尝试此规则:

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^access/([^/]+)/?$ show.php?address=$1&login=0 [L,QSA,NC]