use*_*183 2 php apache .htaccess mod-rewrite
基本上我有下面的htaccess。目前它工作得很好,但它重定向了每个文件。例如,当我只想将 about.php 重定向到 /about 时,将 foo.php 重定向到 /foo。基本上我想强制删除 about.php 的 .php 扩展名,但只删除那个文件。
RewriteRule ^about$ about.php [L]
RewriteCond %{REQUEST_URI} ^/about.php$ [NC]
RewriteRule .* /about [R,L]
Run Code Online (Sandbox Code Playgroud)
现在我有了上面的代码。它现在会导致重定向错误过多。
RewriteRule ^about$ about.php [L]
Run Code Online (Sandbox Code Playgroud)
这是您正确的rewrite,这意味着/about将处理一个请求,就好像它是一个请求/about.php:
至于这个单独的问题:
我不希望用户看到 about.php 即使他输入了
您将需要从to重定向。这就是你的第二行和第三行所做的(带有重定向标志的RewriteRule ),但条件是广泛的,并且还包含一些超流利的东西:/about.php/about[R]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
Run Code Online (Sandbox Code Playgroud)
将其更改为:
RewriteCond %{REQUEST_URI} ^/about.php$ [NC]
RewriteRule .* /about [R,L]
Run Code Online (Sandbox Code Playgroud)
这是否保留 GET 参数?
如果添加[QSA]标志(查询字符串追加),是的。
更新
正如@PeterWooster 指出的那样,重定向部分可以简化为:
Redirect /about.php /about
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4901 次 |
| 最近记录: |