Htaccess URL переписать вопрос - PullRequest
0 голосов
/ 04 июня 2009

У меня есть проблема с использованием Apache.

В моем файле .htaccess я хотел бы конвертировать запросы следующим образом:

URL / портфель / filename.htm

до:

URL? Имя файла

Любой берущий? Спасибо за ваше время

Ответы [ 3 ]

1 голос
/ 04 июня 2009

У вас есть несколько вариантов, в зависимости от того, как вы хотите, чтобы URL отображался посетителям (и поисковым системам).

Если вы хотите, чтобы внешне видимый URL-адрес оставался url/portfolio/filename.htm, решение Алека сработало после того, как я удалил две строки RewriteCond.

RewriteEngine On

RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [PT,L]

Если в строке запроса могут присутствовать другие параметры, и вы хотите сохранить их, добавьте QSA к параметрам в скобках в конце правила.

Если вы хотите, чтобы люди снаружи видели url?filename, измените правило на:

RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [L,R]

То же относится и к другим параметрам запроса.

Если это по-прежнему не помогает, я предлагаю вам включить ведение журнала перезаписи и поискать в этом журнале дополнительные подсказки. Разместите их здесь, и кто-то поможет. Возможно, вам придется поместить эту часть в httpd.conf. Моему Апачу это не понравилось в .htaccess.

RewriteLog ...path...
RewriteLogLevel 3  # you'll regret anything higher
0 голосов
/ 05 июня 2009

Это должно работать:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^portfolio/(.+)\.htm$ index.php?$1 [NC,L]

или если вы хотите изменить его:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^portfolio/(.+)\.htm$ /?$1 [R,NC,L]

Второй будет выглядеть как example.com /? Filename для пользователя, тогда как первый будет выглядеть как example.com / portfolio / filename.htm .

Надеюсь, это поможет.

0 голосов
/ 04 июня 2009

Нечто подобное должно работать, хотя я его не проверял.

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [PT,L]


</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>
...