.htaccess阻止CSS,javascript和图像从子目录进行访问

时间:2018-12-21 10:47:26

标签: php .htaccess directory

我正在搜索此内容,但没有一个解决方案对我有用。 从这里开始,我已经尝试了许多不同的“解决方案”,但是没有一个起作用。

我将WordPress安装在我的域的主根目录中,例如example.com/index.php
所以我在example.com的根目录下有一个用于WordPress的.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

之后,我将另一个PHP脚本安装在主域的子目录中,例如example.com/app/index.php

example.com/app/index.php子目录中的PHP脚本.htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

RewriteEngine On
RewriteBase /
# RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
# RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^search/(.+)$ /search.php?q=$1
RewriteRule ^search/([^/]*?)/page/([^/]*?)/$ /search.php?q=$1&token=$2
RewriteRule ^search/([^/]*?)/$ /search.php?q=$1
RewriteRule ^download/([^/]*?)/page/([^/]*?)/$ /search.php?q=$1&token=$2
RewriteRule ^download/([^/]*?)/$ /search.php?q=$1
RewriteRule ^watch/(.+)$ /watch.php?id=$1  [L]
RewriteRule ^home/(.+)$ /index.php?q=&page=$1 [L]
RewriteRule ^(cache/|submit\.php|head\.php|head_mobile\.php|foot\.php|foot_mobile\.php|includes\.php|config\.php) - [F,L,NC]
RewriteRule ^sitemap.xml$ /sitemap.php [L]
RewriteRule ^dmca$ /dmca.php
RewriteRule ^privacy$ /privacy.php
RewriteRule ^contact$ /contact.php

现在我的PHP脚本无法正常工作,并且在安装PHP脚本的子目录中无法访问所有文件,包括CSS,JS,图像。

我想要网址应如下:

https://example.com/app/watch/wVS-hHZsAIg
https://example.com/app/contact-us
https://example.com/app/dmca
https://example.com/app/css/style.css

但是上述所有URL均不起作用,并且还会重定向到WordPress安装页面,并给出如下所示的404错误:

https://example.com/watch/wVS-hHZsAIg
https://example.com/contact-us
https://example.com/dmca
https://example.com/css/style.css

我的CSS,JS和其他相关资源无法正常工作。这个问题。

.htaccess阻止CSS,javascript和图像通过example.com/app/index.php进行访问

1 个答案:

答案 0 :(得分:0)

RewriteRule ^watch/(.+)$ /watch.php?id=$1  [L]

您所有的重写(例如上述重写)都将URL重写到安装了WordPress的文档根目录。因此,对/app/watch/wVS-hHZsAIg的请求被重写为/watch.php?id=wVS-hHZsAIg(通过上述指令),我认为该请求不存在,因此它将通过WordPress路由,从而产生404。

要使此.htaccess文件在/app子目录中工作,您需要从所有 substitution 字符串中删除斜杠前缀。例如,上述指令应显示为:

RewriteRule ^watch/(.+) watch.php?id=$1 [L]

$ 上的结尾RewriteRule是多余的。)

https://example.com/app/contact-us

您发布的指令查找的是contact,而不是contact-us-因此,这可能与上面的内容无关。

https://example.com/app/css/style.css

再次,这与以上无关。可能是由于HTML中的URL路径错误引起的。如果您使用格式为/css/style.css的根目录相对URL引用CSS,那么它将无法正常工作。您需要使URL路径相对(例如,删除斜杠前缀,如.htaccess中的mod_rewrite指令),或在链接中包含完整的URL路径(首选)。 (这与@starkeen在评论中引用的相反。)

另请参阅有关网站站长统计信息的相关问题: