Jor*_*Lis 8 php apache .htaccess mod-rewrite
我有这个.htaccess文件:
RewriteEngine On
RewriteRule ^hello$ goodbye
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)
所以我收到了所有请求index.php,但是我hello在询问时得到了hello,并且我希望goodbye在$_SERVER['REQUEST_URI']从PHP 打印时收到.
也就是说$_SERVER['REQUEST_URI'],即使在匹配RewriteRule引用之前已经重写了URL ,似乎也是不可变的index.php.有没有办法修改这个值?
我想这样做,为一些现有代码添加一个简单而简单的URL预处理层,而无需修改PHP文件.所以我试图坚持下去.htaccess.
首先,你犯了一个错误,就是不在你的第一条规则中放置L或PT标记.你的代码应该是这样的:
RewriteRule ^hello$ goodbye [PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)
一旦该代码访问此变量index.php:
$_SERVER["REDIRECT_URL"]
Run Code Online (Sandbox Code Playgroud)
这将有价值: /goodbye
如果您已mod_proxy在主机上启用,则可以将第一条规则设为:
RewriteRule ^hello$ /goodbye [P]
Run Code Online (Sandbox Code Playgroud)
然后你将拥有: $_SERVER["REQUEST_URI"]=/goodbye