RewriteRule ^site/index$ site/index.php [NC,L]此行确实成功隐藏了扩展名。现在我不希望带有扩展名的页面可以访问;如果尝试使用扩展名访问该页面,则必须显示错误。只有隐藏了扩展名的扩展名才必须可访问。
2 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
展示了如何像您所问的那样抛出错误消息,但为什么您要抛出错误消息而不是仅仅重定向example.com/page.php
到example.com/page
?这是 .htaccess 代码:
RewriteEngine on RewriteRule ^(.+)\.php$ /$1 [R,L] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ /$1.php [NC,END]
这可以确保 和 都/page
转到/page.php
相同的 url ( /page
) 并提供相同的页面/文件 ( /page.php
)
凤凰求蛊
TA贡献1825条经验 获得超4个赞
它必须显示一个错误。
要在访问时返回 403 Forbidden,您可以在现有重写之前/site/index.php
执行以下操作:
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^site/index\.php$ - [F]
REDIRECT_STATUS
为了防止重写的 URL 也触发 403,检查 的条件是必要的。
然而,重定向/更正此类请求会更利于 SEO。
在旁边:
此行确实成功隐藏了扩展名。
我猜只是措辞,但“这条线”并没有“隐藏”任何东西。它专门将扩展添加回来。(扩展程序已隐藏在初始请求中。)
- 2 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消