2014-01-30 11 views
0

Я знаю, что этот вопрос задан миллион раз, но несите меня здесь. Я использую файл .htaccess в корневой каталог моего локального сервера:Удаление Публикации по URL-адресу, но разрешить «Публикации»

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteRule ^(.*)$ /public/$1 [L] 
</IfModule> 

Это прекрасно работает, но только одна проблема. Если я поставлю что-нибудь с «public» в первом параметре URL, это даст мне 404.

Так что, если у меня есть www.test.dev/publications, это 404 меня, потому что он имеет «общедоступный» в названии. Я тщательно тестировал, чтобы убедиться, что это проблема HTACCESS, и это определенно. Если я назову маршрут www.test.dev/publi, он отлично работает, то же самое с www.test.dev/publi-cations.

Есть ли у кого-нибудь идеи, чтобы публикации внутри URL-адреса с файлом .htaccess?

Спасибо!

EDIT: Просто подумал, что я должен сообщить вам, что да, это неправильный способ удалить публикацию из 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

Что ошибки, которые вы получаете, он работает с 'http: // b log.dev/publications' с моего localhost ('blog' - это имя моей папки). –

+0

Я просто получаю базовый 404 не найден, я использую Route :: get ('публикации/отчеты', 'PublicationsController @ reports'); и все еще дает мне 404. Если я удалю файл .htaccess и сделаю www.test.dev/public/publications/reports, он отлично работает –

ответ

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> 
+0

Это работает только в том случае, если я изменяю свои виртуальные хосты, чтобы сделать базовый каталог «общедоступным». Это правильный способ, который я понимаю, но мой хост производственного сервера не позволяет изменять базовый каталог на сервере. –

+0

Затем вы должны найти уродливую черту, ИМО. –

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> 
+0

Я могу редактировать виртуальный хост локально на своем ПК, чтобы указать на общую папку, но я не могу на рабочем сервере, поэтому мне нужно найти решение с некоторым файлом .htaccess. –

+0

Какой хостинг не позволяет вам получить доступ к изменению корня документа? Большинство из них предоставят вам панель для этого, это пример из Parallels Panel: http://puu.sh/6E431.png –

0

Попробуйте это правило:

RewriteEngine On 
RewriteRule ^((?!public/).*)$ /public/$1 [L,NC] 

UPDATE: Отдается /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] 
+0

Дает мне внутреннюю ошибку сервера 500 –

+0

ОК извините, я удалю свой ответ с тех пор это не сработало. – anubhava

+0

Это нормально, не проблема, спасибо –

Смежные вопросы