这是我的.htaccess,我使用了404定制页面并隐藏了.html和.php扩展。但是当我阻止用户输入.html和.php时,它们也可以访问http://example.com/index和子文件夹http://example.com/folder/index。我使用相对url来链接图像和assests,用户输入"index“将使其取消链接。如何使用.htaccess将任何“索引”重定向到/error404.html?
ErrorDocument 404 /error404.html
<IfModule mod_rewrite.c>
RewriteCond %{THE_REQUEST} \.(?:html|php)\s [NC]
RewriteCond %{REQUEST_URI} !=/error404.html
RewriteRule ^ - [R=404,L]
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Add trailing slash to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ $1/ [R=301,L]
# Remove .php-extension from url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php
# Remove .html-extension from url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^\.]+)/$ $1.html
# End of Apache Rewrite Rules
</IfModule>发布于 2017-06-21 12:59:33
我只解决了一半...代码如下:
<Files "index">
RewriteCond %{REQUEST_URI} !=/error404.html
RewriteRule ^ - [R=404,L]
</Files>它只在http://example.com/index中工作,只在根目录下工作,对于另一个子文件夹,它不工作。谁有更好的答案?
更新:
<Files "index">
RewriteCond %{REQUEST_URI} !=/error404.html
RewriteRule ^ - [R=404,L]
</Files>
<Files "folder/index">
RewriteCond %{REQUEST_URI} !=/error404.html
RewriteRule ^ - [R=404,L]
</Files>这段代码是一个愚蠢的解决方法,但如果我有数千个文件夹,它将非常复杂。
发布于 2017-06-21 13:13:53
最后,此方法可以将所有“索引”重定向到错误页面,错误为404。
RewriteEngine on
RewriteCond %{REQUEST_URI} index
RewriteCond %{REQUEST_URI} !=/error404.html
RewriteRule ^ - [R=404,L]但在加载http://example.com/时出现了一些问题。js和css文件看起来像是unlink。使用back愚蠢的方法可以访问js和css文件。
https://stackoverflow.com/questions/44666901
复制相似问题