2013-03-02 2 views
1

Мой веб-путь: http://git.example.com/ (например).htaccess переписать не работает в подкаталоге

Мой док корень:

/home/user/git/ 

Внутри корня док У меня есть две папки:

/home/user/git/john 
/home/user/git/doe 

Эти папки представляют собой git repos для john и doe соответственно. Они размещаются на веб-сервере, поэтому код может быть протестирован как созданный, прежде чем он будет передан мастеру.

Проблема, с которой я столкнулся, заключается в том, что код сайта в репо имеет файл .htaccess в стиле Wordpress, так что скрипт может обрабатывать все slug-страницы, указанные в базе данных для каждого продукта и т. Д. У меня есть следующий код в моем файле .htaccess внутри каталога /home/user/git/john:

RewriteEngine On 
RewriteBase /john/ 

# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE 
RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR] 
RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR] 
RewriteRule ^.*$ - [L] 

# ROUTE THROUGH CMS 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Я также попытался изменить RewriteBase только / и я попытался изменить последнюю строку на RewriteRule . /john/index.php и все изменения в нем. Ничего я не работаю.

Что я имею в виду, если не работает? Хорошо, что у меня есть url http://git.example.com/john/some_product_name.html - Я получаю ошибку 404, не найденную, и в журнале ошибок apache есть стандартный 404 нет такого файла для запроса. Больше ничего. Его вроде «нет дерьма, файла нет ... вы, наверное, переписываете это, когда его не нашли!»

В любом случае, этот точный скрипт работает безупречно, когда все работает из корневого каталога, как на реальном сайте, однако перемещение копии в подкаталог было проблемой. Я мог бы просто создать новый субдомен для каждого разработчика в проекте и запустить git из своего doc_root, но на самом деле ... должен быть способ сделать эту работу. Что мне не хватает?

Кроме того - я могу подтвердить, что перезапись не происходит вовсе, потому что в верхней части моего index.php файла, у меня есть: echo "I'm here"; exit; так вместо того, чтобы 404 не нашел, что я должен видеть пустую белую страницу с сообщением «I 'м здесь". Я не.

** UPDATE **

Я закомментирована силу через линии в верхней части, как это, и его теперь работает:

RewriteEngine On 
RewriteBase /john/ 

# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE 
#RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR] 
#RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR] 
#RewriteRule ^.*$ - [L] 

# ROUTE THROUGH CMS 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Почему в мире бы эти строки быть причиной этой проблемы? URL-адрес, к которому я обращаюсь, определенно не соответствует ни одному из этих шаблонов!

+0

Удалить последний [OR] для 1-го правила, чтобы работать, как ожидалось. –

+0

* facepalm * Можете ли вы ответить на вопрос, чтобы я мог его принять? – SublymeRick

ответ

2

Удалить последний [OR] в 1-м правиле, например:

# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE 
RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR] 
# Don't use OR in next line. 
RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ 
RewriteRule ^.*$ - [L] 
Смежные вопросы