我知道这个问题已被问了一百万次,但请耐心等待。我在本地服务器的基本目录中使用.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>
这很有效,但只有一个问题。如果我在第一个URL参数中添加了'public',它会给我一个404.
所以,如果我有www.test.dev/publications
,那404就是我,因为它的名字中有'公共'。我已经彻底测试过以确保它是一个HTACCESS问题而且肯定是。如果我将路线命名为www.test.dev/publi
,则效果正常,与www.test.dev/publi-cations
相同。
有没有人有任何想法允许使用.htaccess文件在URL中发布出版物?
谢谢!
编辑:我想我应该让你知道,这不是从URL中删除公众的正确方法,但我的公司拒绝更改主机,我无权修改网站根目录。/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>
答案 0 :(得分:0)
在.htaccess
中尝试此操作,它适用于http://blog.dev/publications
localhost
<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>
答案 1 :(得分:0)
要删除网址的/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>
答案 2 :(得分:0)
尝试此规则:
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]