Перезапись URL - перенаправление без расширения файла - PullRequest
3 голосов
/ 25 марта 2009

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

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Это хорошо работает, чтобы гарантировать, что /myfile.php работает так же, как и myfile (без расширения в URL). Он также обрабатывает строки запросов без проблем, поэтому myfile?var=foo также работает.

Проблема в том, что они регистрируются в Google Analytics как два отдельных файла. Таким образом, хотя myfile.php может быть третьей по популярности страницей на моем сайте с X посещениями, myfile может быть пятой по популярности страницей на моем сайте с посещениями Y.

Как я могу сделать жесткое перенаправление, вместо того, чтобы "принять один из правил"?

Ответы [ 4 ]

2 голосов
/ 25 марта 2009

Не могли бы вы просто изменить свой последний RewriteRule, чтобы сделать это?

RewriteRule ^(.*)$ $1.php [L,R=301]

Это перенаправит «myfile» в «myfile.php».

Кроме того, вы можете настроить это в Google Analytics, используя правила. Хотя это, вероятно, не идеальное решение.

ETA : Если вы хотите, чтобы myfile.php перенаправлял на myfile, попробуйте это для своего последнего правила:

RewriteRule ^(.+)\.php$ $1 [L,R=301]
2 голосов
/ 25 марта 2009

Попробуйте это правило для перенаправления запросов на .php файлы:

RewriteCond %{THE_REQUEST} ^GET\ /(([^/?]*/)*[^/?]+)\.php
RewriteRule ^.+\.php$ /%1 [L,R=301]
1 голос
/ 17 июля 2014

Вы можете просто добавить на свои страницы:

<link rel="canonical" href="..." />

https://support.google.com/webmasters/answer/139066?hl=en

0 голосов
/ 07 апреля 2012

Мне потребовалось несколько часов ... но я верю, что наконец нашел ответ.

// The Original
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

// Add This
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]

Найдено здесь: http://www.webmasterworld.com/apache/3961636.htm

...