php - 添加额外的 Apache2 重写而不进行无限重定向
问题描述
我目前在.htaccess
文件中有以下内容来重写.php
扩展名:
# /var/www/html/help/.htaccess
# To externally redirect /dir/foo.php to /dir/foo excluding POST requests
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L,NE]
# To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
哪个按预期工作。但是,我希望添加一些额外的重写,例如重定向/help/open
到/help/submit
. 我尝试过的一切似乎都以来自 /help/open -> /help/submit 和返回的无限重定向结束。
RewriteRule open.php /help/submit [R=302,NE,L]
RewriteRule submit /help/open.php [L]
有人可以建议我如何在这里实现额外的 URL 重写而不导致无限循环吗?
解决方案
您收到无限循环错误,因为您的规则将目标文件重定向help/open.php
到自身。您可以在第二条规则中使用END
标志来解决此问题。
RewriteRule open.php /help/submit [R=302,NE,L]
RewriteRule submit /help/open.php [END]
注意:该END
标志仅适用于 Apache 2.4 或更高版本。如果您使用的是旧版本的 Apache,请改用以下解决方案
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule open.php /help/submit [R=302,NE,L]
RewriteRule submit /help/open.php [L]
推荐阅读
- css - 自动保存图像或按按钮
- node.js - /usr/bin/env 'node' 权限被拒绝
- reactjs - 不变违规:元素类型无效(使用 Navigator 标签时出错)
- angular - CORS 策略已阻止访问源“http://localhost:4200”的 XMLHttpRequest
- javascript - 如何将 select2 添加到动态添加的下拉列表中
- tableau-api - Tableau(计算字段)
- reactjs - 为什么在实现 react-router-dom 时 sass-loader 会损坏?
- reactjs - ReactJs TetrisApp next TETROMINOES 显示解决方案
- php - 添加不同路由时出现 404 错误 - Laravel 死简单路由
- c++ - 如何检查二维向量元素是否在某个索引范围内