Heim > Fragen und Antworten > Hauptteil
Ich verwende Laravel für die Entwicklung. Das statische Ressourcenverzeichnis und das Routing im Projekt haben denselben Namen, wie zum Beispiel:
//web的静态资源路径
/public/web/xxx
//定义的路由
Route::group(['prefix' => 'web'], function () {
Route::get('/', 'XxxController@indexPage');
});
Bei einer solchen Konfiguration tritt ein 404-Fehler auf, wenn der in PHP integrierte Server für den Zugriff auf localhost:8000/web in der Entwicklungsumgebung verwendet wird:
The requested resource /web_dealer was not found on this server.
Nach einigen Recherchen scheint es, dass es daran liegt, dass es im öffentlichen Verzeichnis einen Ressourcenpfad mit demselben Namen gibt, sodass der Server keinen Grund hat, ihn direkt als statische Ressource zu verarbeiten. Tatsächlich handelt es sich bei diesem Web jedoch nur um einen Ordner, sodass der obige 404 angezeigt wird.
Bei Verwendung des Apache-Servers zum Testen scheint Apache (301) localhost:8000/web zu localhost:8000/web/ umzuleiten, und die Verzeichnisstruktur wird auf der Seite angezeigt. Durch das Festlegen der Optionen -Indexes wird nur die Anzeige deaktiviert, localhost:8000/web wird jedoch weiterhin umgeleitet.
Ich würde gerne wissen, wie man es konfiguriert, wenn man den statischen Ressourcenpfad und die Routenbenennung wie oben gezeigt vereinheitlichen möchte. Oder gibt es ein anderes besseres Namensschema?
仅有的幸福2017-05-16 16:52:56
可以通过修改public/.htaccess来实现(Linux Mint下LAMP本地测试通过)
步骤
修改public目录下的.htaccess文件
定位到:
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
原本意思是:如果不是目录!-d、也不是文件!-f,那么解析到index.php
修改为
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
现在表示:如果不是文件!-f,那么解析到index.php
(从某种意义上!-d已经没用了)
本地测试通过,是否会带来其他问题暂时未知。