Fehler 404 auf virtuellen Hosts, die benutzerdefinierte .htaccess-Dateien verwenden
P粉729198207
2023-09-05 10:28:49
<p>Ich habe Apache2 auf meinem lokalen Linux-Server installiert. Es verfügt über einen virtuellen Host mit dem Namen <code>pcts.local</code> und sein Stammverzeichnis ist <code>/var/www/repos/pcts/</code>. Im Stammverzeichnis von pcts.local befindet sich eine .htaccess-Datei, die versucht, die URL so umzuschreiben, dass sie .php enthält, wenn sie nicht wie folgt angegeben ist: </p>
<pre class="brush:php;toolbar:false;">http://pcts.local/ ->
http://pcts.local/contact -> http://pcts.local/contact.php</pre>
<p>Das Problem ist, dass <code>http://pcts.local/contact</code> den Fehler 404 ausgibt, aber <code>http://pcts.local/contact.php</code> von 200. </p>
<h3>Konfiguration des virtuellen Hosts: </h3>
<pre class="brush:php;toolbar:false;"><VirtualHost *:80>
Servername pcts.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/repos/pcts
Fehlerprotokoll ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log kombiniert
</VirtualHost></pre>
Die Datei <h3>.htaccess befindet sich in <code>/var/www/repos/pcts/</code></h3>
<pre class="brush:php;toolbar:false;">RewriteEngine Ein
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [NC,L]</pre>
<p>Vielen Dank im Voraus für Ihre Hilfe! </p>
在您的代码中,REQUEST_FILENAME 需要一个带有 php 扩展名的文件来执行重写。
试试这个:
如果这是您的完整配置,则您的
.htaccess
文件不会被处理。您尚未启用特定目录的
.htaccess
覆盖。 (即,您尚未启用.htaccess
文件的解析。)默认情况下,.htaccess
覆盖处于禁用状态。但是,您也没有启用对文件系统此区域的访问?您是否在服务器配置的其他地方完成了此操作?!
您应该在
容器内有一个相关的
部分,如下所示:如果需要,您可以进一步限制
.htaccess
覆盖(请参阅下面的参考链接)参考: