проблема конфигурации в отношении файла .htaccess в Ubuntu

Я создаю приложение tshirtshop. У меня есть следующая конфигурация в

/ etc / apache2 / sites-enabled / tshirtshop

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/tshirtshop
        <Directory /var/www/tshirtshop>
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

и следующая в файле .htaccess в папке

/var/www/tshirtshop/.htaccess

<IfModule mod_rewrite.c>
# Enable mod_rewrite
RewriteEngine On
# Specify the folder in which the application resides.
# Use / if the application is in the root.
RewriteBase /tshirtshop
#RewriteBase /
# Rewrite to correct domain to avoid canonicalization problems
# RewriteCond %{HTTP_HOST} !^www\.example\.com
# RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
# Rewrite URLs ending in /index.php or /index.html to /
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
# Rewrite category pages
RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/page-([0-9]+)/?$ index.php?DepartmentId=$1&CategoryId=$2&Page=$3 [L]
RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/?$ index.php?DepartmentId=$1&CategoryId=$2 [L]
# Rewrite department pages
RewriteRule ^.*-d([0-9]+)/page-([0-9]+)/?$ index.php?DepartmentId=$1&Page=$2 [L]
RewriteRule ^.*-d([0-9]+)/?$ index.php?DepartmentId=$1 [L]
# Rewrite subpages of the home page
RewriteRule ^page-([0-9]+)/?$ index.php?Page=$1 [L]
# Rewrite product details pages
RewriteRule ^.*-p([0-9]+)/?$ index.php?ProductId=$1 [L]
</IfModule>

сайт работает на localhost и работает так, как будто не задано правило .htaccess, т. Е. Если бы я просматривал страницу как

]
 http://localhost/tshirtshop/nature-d2

, тогда я получаю сообщение об ошибке 404, но если я просматриваю ту же страницу, что и

http://localhost/tshirtshop/index.php?DepartmentId=2

, то я могу ее просмотреть.

sudo apache2ctl -M
Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK

В чем заключается ошибка, если кто-либо может указать на приведенную выше конфигурацию, или же мне нужно проверить что-то еще?

1
задан 28 June 2013 в 19:18

2 ответа

Я не уверен, является ли это вопросом, связанным с Ubuntu, и его следует задать здесь.

1111 Но вот проблема, которую я вижу. Вы заходите на сайт через http://localhost/tshirtshop, в то время как documentRoot и каталог вашего файла /etc/apache2/sites-enabled/tshirtshop имеют /var/www/tshirtshop. Это означает, что этот файл не используется в качестве конфигурации для localhost - в соответствии с этими значениями сайт должен быть доступен только из http://localhost, а не http://localhost/tshirtshop.

Это может произойти, если файл не был создан в папке /etc/apache2/sites-available, а затем включен в терминале (что создаст символическую ссылку на сайты с поддержкой) после отключения по умолчанию.

Я не знаю команд включения и выключения, так как я использую webmin для управления настройкой локальных тестовых сайтов для меня. А затем отредактируйте мой /etc/hosts файл, чтобы иметь возможность доступа к чему-то более близкому к реальному URL, а не к локальному.

Но возвращаясь к проблеме, использование неправильного URL приводит к тому, что rewriteRule переписывает в hhtp://localhost/index.php?DepartmentId=2, что было бы правильно, если бы доступ к сайту осуществлялся только через http://localhost, а не http://localhost/tshirtshop. Теперь вы можете понять, почему вы получаете ошибку 404.

0
ответ дан 28 June 2013 в 19:18

Я смог решить проблему, что происходит, когда Вы устанавливаете Ubuntu и используете apache2 в ней существует веб-сайт по умолчанию, который активируется, как только apache2 установлен в человечности

так, чтобы веб-сайт по умолчанию, который активен, был

/etc/apache2/sites-enabled/000-default

то, что происходит, у меня есть 2 файла в поддерживающем сайты каталоге

/etc/apache2/sites-enabled/tshirshop  
/etc/apache2/sites-enabled/000-default

когда Apache Ubuntu загружает vhosts из поддерживающего сайты каталога

это загружается, vhost конфигурации, в алфавитном порядке настолько с 000 значениями по умолчанию, был загружен прежде tshirtshop и в с 000 значениями по умолчанию существует строка, которая следует

DocumentRoot /var/www
<Directory /var/www/>
            AllowOverride None
</Directory>

Обосновывает, что моя конфигурация не работала 1) Примечание AllowOverride None в с 000 значениями по умолчанию заканчивал приоритет AllowOverride all в tshirtshop (алфавитная загрузка vhosts), таким образом, это было причиной, мой .htaccess файл не был загружен, так как конфигурация сайта с 000 значениями по умолчанию была загружена прежде, чем считать tshirtshop vhost, и это уже несло строку AllowOverride None 2) В моем/etc/apache2/sites-enabled/tshirshop файл я записал

DocumentRoot /var/www/tshirtshop

и получал доступ к приложению как

http://localhost/tshirtshop

таким образом, я изменил DocumentRoot vhost tshirtshop

DocumentRoot /var/www/tshirtshop

кому:

 DocumentRoot /var/www

и отключенный сайт по умолчанию апача Ubuntu

sudo a2dissite default

Теперь моя конфигурация/etc/apache2/sites-enabled/tshirtshop читается и относится. Таким образом, теперь мой .htaccess файл уважают.

1
ответ дан 28 June 2013 в 19:18

Другие вопросы по тегам:

Похожие вопросы: