1

我想要重写规则(mod_rewrite)来阻止用户直接访问我的页面,在 URL 的末尾使用 .php 扩展名,但我想将我的 php 文件扩展名保留在我的网站文件夹中。另一个问题是,我希望服务器不接受任何扩展 URL 请求,并将用户带到相应的 .php 页面。我有以下重写代码:

RewriteEngine On
RewriteRule \.php$ - [R=404]
RewriteRule ^(.*)$ $1.php

第一条规则是我想要的 404 错误。但是第二条规则只有在单独使用时才有效,没有其他规则。使用上面的块,当我输入无扩展名 URL 时,我认为服务器正在“重定向”请求并添加 .php 扩展名,但第一条规则就像是用户请求并给我一个 404 错误,使第二条不能像我想要的那样工作。

我想我需要一些重写条件来告诉服务器仅当请求来自网站用户时才应用第一条规则,如果来自重写引擎则忽略它。可能吗?

4

1 回答 1

1

我还不是 htaccess 大师,但我希望这会有所帮助:

RewriteCond %{THE_REQUEST} \.php
RewriteRule \.php$ - [R=404]

RewriteCond %{REQUEST_URI} !(\.php)
RewriteCond %{REQUEST_URI} !(^\/error\/.*$)
RewriteRule ^(.*)$ $1.php [L]
于 2013-08-07T17:14:16.690 回答