php - 使用 htaccess 来防止调用除 RewriteRule 之外的页面

标签 php .htaccess mod-rewrite

是否可以使用 .htaccess 来阻止页面被提供,除非它是通过重写规则? 例如,我有干净的 URLS,所以调用 xyz.com/hi 服务于 xyz.com/hi.php

如果被调用的 url = xyz.com/hi.php 页面 opps.html 得到服务,但正常的 xyz .com/hi 仍然有效。

谢谢艺术

DirectoryIndex h1.php
Options +FollowSymLinks
RewriteEngine on
RewriteBase /

# stop calling page by ext
RewriteRule .*\.(php)$ opps.html [L]

# main start page
RewriteRule ^hi$ hi.php [L]

最佳答案

您需要添加一个条件来防止 php 扩展被重写为 oops.html。如果你想阻止对 php 页面的实际请求,你可以在 RewriteCond 中使用 %{THE_REQUEST} 变量:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.php\ 
RewriteRule .*\.(php)$ opps.html [L]

这样,内部重写的以 .php 结尾的 URI 将不会被重写为 oops.html

关于php - 使用 htaccess 来防止调用除 RewriteRule 之外的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271791/

相关文章:

regex - mod重写url中的路径

php - .htaccess 在 Ubuntu Server x64 上不起作用

.htaccess - 将子域从 HTTPS 更改为 HTTP

php - 像美术课一样混合颜色(加减颜色)!

javascript - 跨多个选项卡的亲子导航

php - 通过 zencart Order.php 在外部 php 文件中运行查询

PHP 基本搜索引擎

regex - htaccess 301 重定向 - 删除查询字符串 (QSA)

html - 如何使用 mod_rewrite 重定向到文档并设置 GET 参数?

apache - Laravel 5.1 应用程序可以在没有 .htaccess 重写的情况下运行吗?