2014-10-21 21 views
5

Tôi đang vật lộn với một vấn đề tuổi già. Tôi thừa kế một trang web với một số SEO khá tốt và một vấn đề rõ ràng. Toàn bộ trang web được lưu trữ trên thư mục/site/subdirectory. Tôi đã quyết định rằng tôi cần tải trang web tại thư mục gốc. Vì vậy, một cái gì đó như http://example.org/site/index.php sẽ thay vào đó chuyển hướng đến /index.php (< - được tính là liên kết, nếu không rõ ràng tôi có nghĩa là nó là gốc của trang web/index.php.)Chuyển hướng 301 nâng cao cho toàn bộ trang web tại trang gốc?

Chúng tôi sử dụng joomla cho chương trình phụ trợ của chúng tôi và có hàng trăm trang trên trang web tại thời điểm này. Tôi đã vật lộn với bất kỳ chuyển hướng nào mà tôi đã thấy để làm những gì tôi muốn họ làm. Về cơ bản, bất kỳ trang nào mà khách hàng quen của chúng tôi truy cập từ một liên kết cũ với /site/ trong đó sẽ được chuyển hướng đến cùng một liên kết, nhưng không có dấu sao.

Tôi đang mở để chỉ tải trang từ/trang web/và làm cho nó trông giống như nó là từ gốc. Đó là sự hiểu biết của tôi rằng điều này có thể được thực hiện với một số tiến bộ mod-viết lại (http://kb.mediatemple.net/questions/85/Using+.htaccess+rewrite+rules#gs?) Nhưng tôi đã không có bất kỳ thành công nào được nêu ra. Tôi chạy một trang web beta bắt chước trang mẹ trong một tên miền phụ mà tôi đã chuyển từ/site/sang/để tôi có thể kiểm tra rất nhiều cấu hình .htaccess.

Bất kỳ trợ giúp nào được đánh giá cao ... cảm ơn!

+0

Tôi thấy điều này mà dường như làm các trick ... RewriteCond% {HTTP_HOST}^www.beta.example.org $ [NC] RewriteRule^$ http! (. *): // beta. example.org/$1 [r = 301, nc, L] Có ai biết liệu mã này có hoạt động với tính năng viết lại url của Joomla cũng được bật không? Vì vậy, nó có thể loại bỏ các /index.php/ từ trang là tốt? Ngoài ra, tôi không chắc chắn làm thế nào mã này hoạt động, nhưng nó dường như làm chính xác những gì tôi cần nó để làm. – Daystar1124

Trả lời

1

Điều này có vẻ là câu trả lời công việc mà tôi sẽ thực hiện. Về cơ bản, nhu cầu này được đưa vào thư mục mà bạn muốn chuyển hướng, trong trường hợp của tôi, đó là root/site /.


RewriteEngine on

RewriteCond% {HTTP_HOST}!^Www.beta.example.org $ [NC]

RewriteRule^(. *) $ http://beta.example.org/ $ 1 [r = 301, nc , L]


Tôi giả định quy tắc đầu tiên bỏ qua www? Tôi muốn làm việc xung quanh điều đó nhưng tôi không chắc chắn chính xác lý do tại sao nó sẽ được tạo ra anyway. điều này sẽ viết lại bất kỳ URL nào truy cập tệp .htaccess đó (bên trong thư mục con của bạn) và đưa bạn đến cùng một URL mà không có danh sách thư mục phụ. Nó không thực sự làm việc với công cụ viết lại index.php, nhưng điều đó là tốt vì nó vẫn đạt đến đúng trang.

Nếu có ai có tùy chọn tốt hơn cho tôi với việc sử dụng Joomla, tôi rất vui khi được nghe. Nhưng, tôi biết đây là những gì tôi sẽ đi với bây giờ bởi vì nó mang lại cho tôi kết quả tuyệt vời.

+0

người đầu tiên không bỏ qua www; 'RewriteCond' [nói] (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond)" hey, nếu điều này phù hợp, có một cái gì đó bạn sẽ cần phải làm ". Dĩ nhiên, "somethinig" là RewriteRule. Câu trả lời của bạn có vẻ không chính xác dựa trên câu hỏi của bạn. Nếu bạn không chấp nhận nó, tôi sẽ đưa ra một quy tắc tốt hơn. – tedder42

+1

[Câu trả lời này] (http://stackoverflow.com/a/18468916/1470907) có vẻ phù hợp hơn với câu hỏi của bạn. Quy tắc trong câu trả lời của bạn có hiệu quả nói: 'Nếu tên miền không bắt đầu bằng 'www', hãy chuyển hướng đến phiên bản không có 'www'.' Điều này thường gây ra vòng lặp chuyển hướng, nhưng điều đó tránh được ở đây bằng cách chuyển hướng đến một vị trí không không bị ảnh hưởng bởi quy tắc này. Bạn có thể xóa dòng 'RewriteCond' và sử dụng đường dẫn thay vì URL đầy đủ trong quy tắc để làm cho ý định của quy tắc rõ ràng hơn. – Stecman

+0

Cảm ơn bạn đã giải thích điều này. Tôi không được chấp nhận của tôi và chấp nhận những kẻ trả lời dưới đây bởi vì anh ta làm một công việc tuyệt vời. Có cách nào tốt hơn? Tôi sẽ sẵn sàng thay đổi câu trả lời tốt nhất nếu ai đó cải thiện trên @chesterbr dưới đây. Tôi cho rằng câu trả lời của anh ta cũng sẽ hoạt động tốt nhất với SEO hiện tại. Tôi chấp nhận những gì tôi tìm thấy như là câu trả lời chỉ vì nó trông giống như nó đã làm những gì tôi muốn nó làm mặc dù. – Daystar1124

0

nếu máy chủ của bạn là apache2, bạn có thể cấu hình có

<VirtualHost *:80> 
ServerName sitio.com 
ServerAlias www.sitio.com 
DocumentRoot /home/user/public_html/sitio/ 
... 
</VirtualHost> 

Bạn cần quyền cho thay đổi này

Các vấn đề liên quan