Справка Apache 2.2 mod_rewrite - PullRequest
       32

Справка Apache 2.2 mod_rewrite

0 голосов
/ 02 июня 2011

Я пытаюсь получить Apache 2.2 mod_rewrite для получения чистых URL.У меня есть ссылки, такие как

<ul>
<li><a href="index.php?view=pageName">Page Name</a></li>
<li><a href="index.php?view=pageName2">Page Name2</a></li>
<li><a href="index.php?view=pageName3">Page Name3</a></li>
</ul>

, и URL-адрес получается

http://example.com/user/index.php?view=pageName

Я хотел бы очистить URL-адрес в адресной строке, чтобы это

http://example.com/user/pageName

Редактировать: это то, что находится в моем httpd.conf, если оно используется.

<Directory "C:/Apache2.2/htdocs/user">
    Options Indexes FollowSymLinks
    AllowOverride all
    order allow,deny
    Allow from all
</Directory>

Используя phpinfo (), я проверил, что mod_rewrite загружен, и у меня это есть в моем.htaccess (пользовательский файл, не root .htaccess) и не виртуальный пользователь на apache

RewriteEngine on
RewriteBase /user/ #Edited rewrite base added in, but not helping much.
RewriteOptions Inherit
RewriteRule ^/user/([a-zA-Z])/?$ index.php?view=$1  [NC,L] 

Редактировать: остальные мои .htaccess

#Ensure browser reads Header
Header unset ETag
FileETag None
Header unset Last-Modified

#Set caching expires
Header set Expires On
ExpiresDefault "access plus 30 days"

#gzip
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>

неработают одинаково для всех ссылок меню, которые идентичны по структуре html и не работают должным образом.IE: он отправляет мне http://example.com/user/?view=pageName, но загружает содержимое корневого HTML-файла.

Если я изменю эту строку

RewriteRule ^/user/([a-zA-Z])/?$ index.php?view=$1  [NC,L]

на

RewriteRule ^index\.php$ http://www.google.com  [NC,L]

Iполучить в Google, как ожидалось.Поэтому, очевидно, я должен делать что-то не так с соответствием и заменой, но что я делаю не так?Заранее спасибо.

Редактировать: access.log и error.log не содержат ошибок.

Ответы [ 3 ]

3 голосов
/ 02 июня 2011
RewriteRule ^/user/([a-zA-Z]+)?$ index.php?view=$1  [NC,L]

вам не хватает +, поэтому вы не соответствуете словам, только один символ

2 голосов
/ 02 июня 2011
RewriteRule ^/user/([a-zA-Z])?$ index.php?view=$1  [NC,L] 

попробуйте это .. (одна косая черта удалена)

0 голосов
/ 03 июня 2011

Исправлено: пришлось изменить стиль URL-адреса HTML, чтобы использовать его как таковой

<a href="pageName">Page Name</a>

Затем в .htaccess

RewriteEngine On
RewriteOptions Inherit
ReWriteBase /user/
RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?view=$1 [QSA,L]

Также пришлось отключить mod_cache.so из файла httpd.conf в apache, так как это мешает перезаписи, если есть какие-либо кеши. Надеюсь, это поможет другим заставить работать чистые URL.

...