Головная боль Mod_rewrite

#apache #.htaccess #rewrite

#apache #.htaccess #переписать

Вопрос:

Хорошо, я просто пытаюсь настроить простое правило перезаписи для сайта. Во-первых, в httpd.conf у меня есть

 LoadModule rewrite_module modules/mod_rewrite.so
  

Затем в отдельном файле у меня есть эта настройка псевдонима

 Alias /vworker/ "f:/vWorker/" 

<Directory "f:/vWorker/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
</Directory>
  

Хорошо, теперь каталог сайта

 f:/vWorker/urlmask
  

Там у меня есть файл .htaccess, в котором написано следующее

 RewriteEngine on
RewriteRule ^redirect/([0-9] )/?$ index.php?redirect=$1 [L]
  

Теперь, чего я хочу, так это перейти по URL-адресу http://localhost/vworker/urlmask/redirect/3161513 это действительно вызовет http://localhost/vworker/urlmask/index.php?redirect?3161513

С моей точки зрения, кажется, что все настроено правильно, и если я добавляю тарабарщину в свой файл .htaccess, я получаю ошибку сервера, поэтому я знаю, что он ее читает.

В итоге я получаю страницу с надписью «Не найдено. Запрошенный URL /vworker/urlmask/redirect/94173336828903446 не найден на этом сервере «. Есть идеи, что я делаю не так?

Комментарии:

1. Работает ли это, если вы не используете «^»?

Ответ №1:

В общем, всякий раз, когда у вас есть Alias , вам понадобится RewriteBase , чтобы все работало так, как ожидалось.

В вашем случае у вас должно быть

 RewriteBase /vworker/urlmask/
  

в том же .htaccess, что и ваши правила.

Комментарии:

1. Если URL-адрес localhost/vworker/urlmask / … и .htaccess находится в папке urlmask, это должно быть правильным RewriteBase . Вы можете добавить что-то вроде RewriteLogLevel 2 , чтобы получить некоторое протоколирование процесса перезаписи (более высокие цифры дают больше информации).

2. Оказывается, у меня был файл с именем redirect.sql, поэтому, когда я переименовал его, он сработал.

3. Но теперь у меня возникла проблема с неработающими ресурсами, такими как изображения, css и т. Д. На самом деле он должен искать их в папке перенаправления, есть идеи, как это исправить?

4. Это будет зависеть от того, где находятся ресурсы, как выглядят (или должны выглядеть) их URL-адреса… может быть другой вопрос.

5. Понял это. Хотя спасибо.