2009-05-18 69 views
6

Greetings,301 redirect index.html đến/hoặc /index.php

Tôi vừa di chuyển một trang web từ IIS để Apache và đang gặp một chút rắc rối chuyển hướng file index mà không gây ra một vòng lặp vô hạn.

Cả hai cá nhân sẽ gây ra một tiếp vòng

Redirect 301 /index.htm /index.php

Redirect 301 /index.htm http://www.foo.com/

Dưới đây là một bản sao của hiện tại của tôi. htaccess. Ai đó có thể giúp tôi? Tôi có một loạt các liên kết chỉ để http://www.foo.com/index.htm mà tôi muốn 301 chuyển hướng đến http://www.foo.com/

RewriteEngine On 

########## Begin - Rewrite rules to block out some common exploits 
## If you experience problems on your site block out the operations listed below 
## This attempts to block the most common type of exploit `attempts` to Joomla! 
# 
# Block out any script trying to set a mosConfig value through the URL 
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR] 
# Block out any script trying to base64_encode crap to send via URL 
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR] 
# Block out any script that includes a <script> tag in URL 
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] 
# Block out any script trying to set a PHP GLOBALS variable via URL 
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] 
# Block out any script trying to modify a _REQUEST variable via URL 
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) 
# Send all blocked request to homepage with 403 Forbidden error! 
RewriteRule ^(.*)$ index.php [F,L] 
# 
########## End - Rewrite rules to block out some common exploits 

# Uncomment following line if your webserver's URL 
# is not directly related to physical file paths. 
# Update Your Joomla! Directory (just/for root) 

# RewriteBase/

########## Begin - Joomla! core SEF Section 
# 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/index.php 
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|\.cfm|/[^.]*)$ [NC] 
RewriteRule (.*) index.php 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 
# 
########## End - Joomla! core SEF Section 

Redirect 301 /a /administrator 
+0

+1 cho di chuyển ra khỏi IIS để Apache – eleven81

+0

@ eleven81 - Nice. –

Trả lời

6

Tại sao bạn làm điều này? Tại sao không thêm index.php để vhost của bạn/config như một phần mở rộng chỉ số hợp lệ

DirectoryIndex index.html index.php 

Và sau đó xóa các tập tin HTML>

hoặc

DirectoryIndex index.php 
0

Tôi đồng ý với bình luận Kender về sự chuyển hướng vòng lặp. Có thể cách tròn mà là phải có

DirectoryIndex notindex.html

cùng với chuyển hướng, sau đó đưa thực tế trang bìa trong notindex.html. Tôi không rõ có vấn đề gì với những người đang sử dụng /index.html nếu trang đó thực sự tồn tại?

+0

Có cả http://www.example.com/ và http://www.example.com/index.html chuyển đến cùng một trang là những gì Google gọi là "nội dung trùng lặp" và nó * có thể * tạo ra một vấn đề về SEO. Và, bên cạnh các vấn đề tham chiếu có thể xảy ra, tôi thấy nó rất tệ. Một URL, một trang. – bortzmeyer

0

Tôi không được phép thêm các siêu liên kết nào, như tôi là một người dùng mới, vì vậy khi tôi đã gõ "foo" chỉ giả định thats toàn bộ URL ...

Để chuyển hướng foo/index. PHP để foo/không có vòng lặp, sử dụng một quy tắc viết lại:

RewriteRule index.php foo/ [R=301] 

bạn có thể cần phải sử dụng /index.php tùy thuộc vào những gì RewriteBase của bạn được thiết lập như (và có bao nhiêu thư mục bạn có một index.php trong) .

1

Bạn sẽ cần phải kiểm tra giá trị của REQUEST_URI như thế này:

RewriteCond %{REQUEST_URI} ^/index.htm$  # If REQUEST_URI == "/index.htm" 
RewriteRule (.*)/[R=301,L]    # Then 301 redirect to "/" 
Các vấn đề liên quan