Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何将现有文件以外的所有请求映射到处理程序_Apache_.htaccess_Handler - Fatal编程技术网

Apache 如何将现有文件以外的所有请求映射到处理程序

Apache 如何将现有文件以外的所有请求映射到处理程序,apache,.htaccess,handler,Apache,.htaccess,Handler,需要一些关于htaccess重写规则的帮助,我一直坚持 我有一个handler index.html,用于处理除现有文件之外的所有请求。 我使用的规则是: RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.html [L] 但是我有一些与要处理的请求类似的文件名。如果有一个对/main的请求,它必须由index.html来处理,但是由于扩展名为-main.asd

需要一些关于htaccess重写规则的帮助,我一直坚持

我有一个handler index.html,用于处理除现有文件之外的所有请求。 我使用的规则是:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [L]
但是我有一些与要处理的请求类似的文件名。如果有一个对/main的请求,它必须由index.html来处理,但是由于扩展名为-main.asdfjaskldfjaskdffjasfd.js的现有文件,我得到了404错误,而不是处理

这个问题在nginx中非常容易解决,只需一句话:“try_files$uri$uri//index.html”;但我没有机会在仅生产的Apache上使用nginx

所以我需要一些规则方面的帮助。 尝试过(除数十种其他方法外):

完全访问:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_URI} ^/(demo-auth|api|oauth|password|login|logout|register|images)
RewriteRule ^ laravel.php [L]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^ /index.html

RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

提前感谢。

在htaccess顶部添加以下内容以禁用多视图:

Options -MultiViews
描述了启用“多视图”选项时的功能:

如果 服务器收到对/some/dir/foo的请求,而/some/dir/foo未收到请求 存在,然后服务器读取目录,查找所有名为 foo.*,并有效地伪造了一个类型映射来命名所有这些 文件,并为其分配相同的媒体类型和内容编码 如果客户点名要求其中一个的话。那么 选择最符合客户要求的,并返回 文件


是 啊这是多视图公司的错。这是AWS,它有一些特定的配置。例如,它在Debian中是默认的,但在AWS上不是。所以我把这个选项设置为htaccess,一切都很顺利。谢谢@
Options -MultiViews