Постоянные ссылки с mod_rewrite - PullRequest
1 голос
/ 15 октября 2010

Можно ли создать правило для коротких URL, чтобы каждое слово (кроме корневых папок) после http://mydomain.com/ было перенаправлено в /index.php?permalink=$1?

примеры:

http://mydomain.com/ - перейти на index.php (стандарт). http://mydomain.com/word - перейти на index.php? Постоянная ссылка = слово

Мой .htaccess сейчас выглядит так:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule /page/([0-9]+) /?page=$1

1 Ответ

2 голосов
/ 15 октября 2010

Попробуйте:

  RewriteRule ^.*/(\w+)\b$ /index.php?permalink=$1

^ Утверждение позиции в начале строки.
.*/ Совпадение с любым отдельным символом или ничем до последнего /.
(\w+) Совпадение букв, цифр, подчеркиваний, по крайней мере, с одним символом и захватывание его как номера группы 1.
\b Утверждение позиции на границе слова.
$ Утверждение позиции в концеline.

Таким образом:

http://mydomain.com/word1 становится /index.php?permalink=word1
http://mydomain.com/publish_files/word2 становится /index.php?permalink=word2

Для запроса комментариев, попробуйте это, но я еще не проверял:

  RewriteCond %{HTTP_REFERER} !^(http://)?{HTTP_HOST}/[^/]+/.*$ [NC]
  RewriteRule ^.*$ /index.php
  RewriteCond %{HTTP_REFERER} !^(http://)?{HTTP_HOST}/\w+$ [NC]
  RewriteRule ^.*/(\w+)$ /index.php?permalink=$1
...