2010-09-17 2 views
0

Я бы подумал, что это будет лучше документировано где-нибудь, но не может найти много информации по этому вопросу..htaccess: non-www to www + extensionless urls + no index

В основном я использую HTAccess привить 3 правила на сайте я работаю над:

  1. Redirect/переписать не-WWW на WWW
  2. Снимите удлинители с каждой из страниц сайта - это php-файлы. Это означает, что индекс сайта становится www.example.co.uk/index вместо www.example.co.uk/index.php, поэтому ...
  3. Перенаправление/переписывание www.example.co.uk/ индекс www.example.co.uk/

Это сценарий, я собрал из различных источников, он делает работу, но не кажется, Google, чтобы ползать сайт, когда я указывал на extensionless urls в sitemap, любая идея почему? Заранее спасибо.

Options +FollowSymlinks 
RewriteEngine On 

# Rewrite index.php to/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/#?\ ]+/)*index\.php?\ HTTP/ 
RewriteCond %{HTTP_HOST} ^(www\.example\.co\.uk) [OR] 
RewriteCond www.%{HTTP_HOST} ^(www\.example\.co\.uk) 
RewriteRule ^(([^/]+/)*)index\.php?$ http://%1/$1 [R=301,L] 

# Rewrite example.co.uk to www.example.co.uk for canonic purposes, this rule is paired with the previous 
RewriteCond %{HTTP_HOST} ^example\.co\.uk [NC] 
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [R=301,L] 
#REMOVE .php from file extensions 
# If the requested URI does not contain a period in the final path-part 
RewriteCond %{REQUEST_URI} !(\.[^./]+)$ 
# and if it does not exist as a directory 
RewriteCond %{REQUEST_fileNAME} !-d 
# and if it does not exist as a file 
RewriteCond %{REQUEST_fileNAME} !-f 
# then add .php to get the actual filename 
RewriteRule (.*) /$1.php [L] 

# If client request header contains php file extension 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+\.)+php\ HTTP 
# externally redirect to extensionless URI 
RewriteRule ^(.+)\.php$ http://www.example.co.uk/$1 [R=301,L] 
+0

Что вопрос тогда? Если вы хотите знать, почему Google не сканирует сайт, правила Google по обходам составлены Google - если он не работает, он не работает. – Rushyo

+0

вопрос в том, есть ли какие-то вопиющие ошибки, которые я сделал, которые помешали бы ему правильно сканировать .. извините, я должен был сделать это более ясным. Как я уже сказал, комбинация правил плохо документирована. Cheers – Storsey

ответ

0

Попробуйте эти правила:

# Redirect/rewrite non-www to www 
RewriteCond %{HTTP_HOST} ^www\.(.+) 
RewriteCond %{HTTPS}s://%1 ^on(.+)|offs(.+ 
RewriteRule^http%1%2%{REQUEST_URI} [L,R=301] 

# Remove the extensions from each of the site pages - they're php files. Doing this means that the site index becomes www.site.com/index instead of www.site.com/index.php, so... 
RewriteCond %{THE_REQUEST} ^GET\ (/[^?\ ]+)\.php[?\ ] 
RewriteRule .+\.php$ %1 [L,R=301] 

#Redirect/rewrite the www.site.com/index to www.site.com/ 
RewriteRule ^index$/[L,R=301] 
+0

спасибо за вход .. я получил ошибку внутреннего сервера 500 (я изменил L, R0301 на последней строке на L, R = 301 тоже) .. Также я не заметил некоторые из кода, который я использовал используя, который я просто добавлю к своему оригинальному сообщению сейчас – Storsey

Смежные вопросы