在我的页面上,我将silverstripe框架安装在子文件夹current
中。我有两个.htaccess
文件从URL中删除“当前”目录。一个在根:
root htaccess:
AddOutputFilterByType deflate text/html text/plain text/css text/javascript application/javascript application/x-javascript application/rss+xml
# Deployment scripts
RewriteCond %{REQUEST_FILENAME} /deploy/
RewriteRule ^(.*)$ $1 [L]
### SILVERSTRIPE START ###
# See: http://www.silverstripe.org/installing-silverstripe/show/12328#post283997
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /current/
RewriteRule ^(.*)$ /current/$1
</IfModule>
### SILVERSTRIPE END ###
AddHandler application/x-httpd-php54 .php
和current
文件夹中的一个:
### SILVERSTRIPE START ###
<Files *.ss>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Files>
<Files web.config>
Order deny,allow
Deny from all
</Files>
ErrorDocument 404 /assets/error-404.html
ErrorDocument 500 /assets/error-500.html
<IfModule mod_alias.c>
RedirectMatch 403 /silverstripe-cache(/|$)
</IfModule>
<IfModule mod_rewrite.c>
SetEnv HTTP_MOD_REWRITE On
RewriteEngine On
RewriteBase '/'
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L]
</IfModule>
### SILVERSTRIPE END ###
此设置存在的问题是,该网站可用作 domain.com 和 domain.com/current
我如何通过current
目录禁止/拒绝访问?
最佳解决方案是外部重定向到同一页面,但URL中没有current
。如何在没有URL中的当前目录的情况下创建到站点的重定向?
所以所有网址都重写(外部),如下所示:
到目前为止,我找到了这个答案:Url rewrite subfolder to root and forbid accessing subfolder。解决方案似乎不适用于我的情况。 如果我使用此解决方案访问该页面,则会收到403错误和aditional错误500,因为找不到错误文档。
答案 0 :(得分:1)
我如何禁止/拒绝通过当前目录进行访问?
将此规则作为/current/.htaccess
中的第一条规则插入:
# if direct request is made for /current/abc then external redirect to /abc
RewriteCond %{THE_REQUEST} \s/current/(\S*) [NC]
RewriteRule ^ /%1 [L,R=301,NE]
THE_REQUEST
变量表示Apache从您的浏览器收到的原始请求,并且在执行一些重写规则后不会被覆盖。/current/
URI的直接请求。答案 1 :(得分:0)
问题在于您可以找到.htaccess文件。