我在目录/home/user/Documents/laravel-training
中有一个Laravel网站。Laravel:带有斜线的URL的别名
我想从http://localhost/dev/
访问我的网站,
所以我在/etc/apache2/sites-enabled/000-default.conf
设置别名。
这是我000-default.conf
:
<VirtualHost *:80>
ServerName foo.example.net
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /dev /home/user/Documents/laravel-training/public
<Directory /home/user/Documents/laravel-training/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
我还添加RewriteBase /dev
到/home/user/Documents/laravel-training/public/.htaccess
开始。
现在,我可以成功访问我的网站,以防万一网址不以斜线结尾。
例如,如果我添加了以下路线:
Route::get('test', function() {
return view('welcome');
});
然后,我可以从http://localhost/dev/test
参观。
但是,如果我的URL是http://localhost/dev/test/
,服务器将错误地将我的页面重定向到http://localhost/test
,并导致404 Not Found错误。
Not Found
The requested URL /test was not found on this server.
Apache/2.4.12 (Ubuntu) Server at localhost Port 80
有谁知道如何解决这个问题?
针对斯特凡诺Ortisi的评论:
我没有.htaccess
改变任何东西。我只保留了默认设置。
RewriteBase /dev
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
你有没有检查你的公共文件夹里的laravel的.htaccess工作? –
@StefanoOrtisi我没有修改任何其他东西。我更新了我的帖子。 – yuwen41200
试着在你的'RewriteEngine On'指令后移动'RewriteBase/dev'指令。 – patricus