我知道这个问题已经被多次询问/回答,但我似乎无法超越它。所以,我道歉......
在网站开发阶段,我希望浏览器地址栏显示:domain.com/dev/item
我希望RewriteRule将其更改为:domain.com/dev/index.php?p=item
我正在使用位于public_html目录中的.htaccess。 public_html / dev中的.htaccess,运行正常,配置为将未使用我的ip的所有人重定向到domain.com。我的apache版本是2.2.15,我已经确认我能够使用.htaccess重定向,但顶级.htacess根本不起作用。这是我使用的代码:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^dev/(.*)$ dev/index.php?p=$1 [NC]
#variations tried: ^dev/(.*)+$, ^dev/(.*)+?$
包括变体在内,会导致404,/ dev / item未找到。删除dev / from ^ dev /(.*)$会产生正确的url格式,但是以下服务器变量:
[REDIRECT_QUERY_STRING] => p=
[REDIRECT_URL] => /404.shtml
[QUERY_STRING] => p=
[REQUEST_URI] => /dev/item
我的目标是进行一些小改动,以支持实时网站和开发副本的这种重写。但我只是不明白我做错了什么。我真的很感激任何帮助。
答案 0 :(得分:2)
您需要在重写路径的开头指定/。
请改为尝试:
RewriteEngine on
RewriteBase /
# If request is for a file that does actually exist, don't rewrite.
RewriteCond %{REQUEST_FILENAME} !-f
# If request is for a directory that does actually exist, don't rewrite.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/dev/(.*)$ /dev/index.php?p=$1 [NC]