我知道这个问题已经被问了一百万次了,但请耐心听我说。我在本地服务器的基目录下使用了一个.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>这很有效,但只有一个问题。如果我在第一个URL参数中放入任何带有'public‘的内容,它会给我一个404。
所以,如果我有www.test.dev/publications,那么它就是我,因为它的名称中有“public”。我已经进行了彻底的测试,以确保这是一个HTACCESS问题,而且肯定是。如果我将路由命名为www.test.dev/publi,它就可以正常工作,www.test.dev/publi-cations也是如此。
这里有没有人知道允许在.htaccess文件中发布内容?
谢谢!
编辑:我想我应该让你知道,是的,这不是从URL中删除public的正确方法,但我的公司拒绝更改主机,我也没有权限修改站点根目录。
/public/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>发布于 2014-01-31 04:18:33
在.htaccess中尝试一下,它可以在我的localhost中使用http://blog.dev/publications
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>发布于 2014-01-31 04:18:49
要删除urls中的/public/部分,您不必将/public/添加到.htaccess中,您需要将VirtualHost DocumentRoot直接指向该文件夹,这是一个示例:
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/yourdomain.com/public
<Directory /var/www/yourdomain.com>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
</Directory>
</VirtualHost>然后在你的.htaccess里放一些类似这样的东西:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>发布于 2014-01-31 05:03:16
试试这个规则:
RewriteEngine On
RewriteRule ^((?!public/).*)$ /public/$1 [L,NC]更新:建议的/public/.htaccess
Options -MultiViews
RewriteEngine On
RewriteBase /public/
# Redirect Trailing Slashes...
#RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]https://stackoverflow.com/questions/21466177
复制相似问题