我正在将一个Django应用程序部署到一个环境中,默认情况下需要用户登录所有内容,但是如果您使用/public
启动URL,则允许您在没有登录的情况下显示特定的URL,例如{ {1}}(这是一项安全措施,默认情况下保护所有内容,并明确定义应公开访问的内容)。
我决定将/public/forums
中要公开的所有网址加上urls.py
作为前缀。这有效,但我不希望显示/public
。我添加到/public
:
.htaccess
但是,我的服务器将返回RewriteEngine On
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
。
如何修复此问题以实现不公开的网址?
答案 0 :(得分:0)
RewriteCond
正在触发RewriteRule
。也就是说,您正在重写一个触发重写的URL,因此会出现递归错误。这是因为RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
中的正则表达式正在捕捉所有内容,甚至是/public/forums/
。查看此已保存的示例:https://regex101.com/r/dI8cH4/1。并尝试首先使用更简单的重写(比如登陆/主页):
Options +FollowSymLinks
RewriteEngine On
RewriteRule /public/ http://example.com/