.htaccess mod#u rewrite不';事实上。。。重新写入URL
基本上,我一直在尝试使用mod_rewrite通过.htaccess创建一些友好的URL,我已经设法让它工作了。。。但只有基本的东西,如:.htaccess mod#u rewrite不';事实上。。。重新写入URL,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,基本上,我一直在尝试使用mod_rewrite通过.htaccess创建一些友好的URL,我已经设法让它工作了。。。但只有基本的东西,如: RewriteEngine On RewriteBase / RewriteRule ^profile.php http://www.google.co.uk [L] 所以mod_rewrite可以工作,我可以重新定向到其他站点、服务器中的其他文件/目录等-但当我使用此选项时,它似乎不起作用: RewriteEngine On RewriteBase
RewriteEngine On
RewriteBase /
RewriteRule ^profile.php http://www.google.co.uk [L]
所以mod_rewrite可以工作,我可以重新定向到其他站点、服务器中的其他文件/目录等-但当我使用此选项时,它似乎不起作用:
RewriteEngine On
RewriteBase /
RewriteRule ^profile.php?user=$1 ^profile/user/([^/]*)/$ [L]
在这方面的任何帮助都会很好,因为我在mod_rewrite方面相当差劲,但这是我需要学习的东西
干杯 错了
## rewriting from to
RewriteRule ^profile.php?user=$1 ^profile/user/([^/]*)/$ [L]
应该是
## rewriting from to
RewriteRule ^profile/user/([^/]+)$ profile.php?user=$1 [L]
将[L]更改为[R,L]以强制执行实际的HTTP重定向。否则,它只在内部进行重写(如果可能的话),这只会影响从URI到文件系统的映射。(请参见中[R]标志的说明。)您当前的配置如下:
RewriteEngine On
RewriteBase /
RewriteRule ^profile.php?user=$1 ^profile/user/([^/]*)/$ [L]
在重写规则中
交换了from和to参数
假设服务器上有如下目录结构:
/var/www/htdocs/profile/user/albert
/var/www/htdocs/profile/user/bob
然后可以使用以下规则:
RewriteCond ${QUERY_STRING} ^user=(\w+)$
RewriteRule ^profile\.php$ profile/user/%1 [L]
这里有几点你弄错了:
- 对“/profile.php?user=bob”的请求首先被拆分为请求URI和查询字符串。
将仅使用请求URI。因此,必须单独处理查询字符串mod\u rewrite
- 我将用户名限制为仅
。如果我允许所有字符,攻击者可以轻松调用[A-Za-z0-9.]
,这将被重写为/profile.php?user=../../config.php
,您可能不想与世界共享该文件profile/user/../../config.php
指令的参数在语法上完全不同。RewriteRule
- 第一个参数(from部分)是一个正则表达式,它通常以插入符号开头,以美元结尾
- 第二个参数(to部分)是替换,它几乎只是一个简单的字符串,只有一些特殊的特性。此字符串通常不以插入符号开头,但看起来更像路径名