Простой мод переписать без дубликатов URL.Это возможно? - PullRequest
0 голосов
/ 18 апреля 2011

Я создал простой мод переписать

# REMOVE WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]


# URL REWRITE
RewriteEngine  on

RewriteRule ^design/?$ website-designing.php [L]

Все работает нормально. Мой вопрос в настоящее время оба URL работают. Как это предотвратить?

mydomain.com/website-designing.php (my original URL)

mydomain.com/design/ (my SEO URL)

Я хочу только SEO URL, та же концепция применила все мои файлы в этом каталоге (более 150 URL в этом каталоге)

Это возможно?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Думаю, у вас возникнут проблемы с запретом доступа к реальному файлу .php, поскольку клиент должен иметь возможность его отображать.

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

Между прочим, ваша переписка, удобная для поисковых систем, должна выглядеть так:

RewriteRule ^design/$ /website-designing.php [L]

(Любой, кто пытается получить доступ к дизайну / получил обслуживание /website-designing.php: без перенаправления, поэтому вы не увидите имя в адресной строке).

Я никогда не использовал флаг nosubreq [NS]. Говорят, что он фильтрует внутренний подзапрос, сгенерированный модулями. Но не уверен, что он работает с внутренними вызовами HTTP. (Поскольку вы переписываете правило, инициирующее новый запрос, все правила будут обработаны повторно, поэтому вы не можете просто запретить доступ ко всем файлам .php)

Может быть, вы можете попробовать:

RewriteRule ^.*\.php$ - [F,NS]

Но не ожидайте многого из этого.

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

Edit:

Кажется, что мы можем что-то сделать с: REDIRECT_URL или REQUEST_URI, кажется, что они сохраняются с переписыванием. Нравится:

RewriteCond %{REDIRECT_URL} \.php
RewriteRule ^.*$ - [F]

RewriteRule ^design/$ /website-designing.php [L]

Это должно запретить любой доступ при вызове файла .php в адресной строке.

0 голосов
/ 18 апреля 2011

Для каждого RewriteRule ^design/?$ website-designing.php [L] вы можете запретить доступ к соответствующему ресурсу.

RewriteRule website-designing.php - [F]

или возможно

RewriteRule .*\.php - [F]
...