2011-10-25 15 views
5

Tôi đã nghiên cứu điều này trong khoảng 2 giờ và mặc dù hầu hết các chủ đề đều tương tự nhau, không có cách nào giải thích cách làm những gì tôi muốn làm.Apache viết lại từ tên miền phụ sang www nhưng giữ tất cả các liên kết cố định

Tôi đang dùng một blog có cấu trúc blog.domain.com và di chuyển nó tới www.domain.com/blog/. Tôi cần phải giữ permalink của bài đăng blog khi tôi chuyển hướng như vậy ...

blog.domain.com/here-is-a-blog-post/

nên trở thành:

www.domain.com/blog/here-is-a-blog-post/ 

Sau khi thử nhiều thứ, đây là điều cuối cùng tôi đã cố gắng kết thúc không có ảnh hưởng gì cả. Ý nghĩa blog.domain.com chỉ nằm ở blog.domain.com/

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^xyz\.domain\.com$ 
RewriteRule ^/(.*) http://domain.com/$1 [redirect,last] 

Đây là mục nhập từ tệp httpd.conf của tôi.

<VirtualHost xxx.xxx.xxx.xxx:80> 
    SSLEngine off 
    SuexecUserGroup apache apache 
    ServerName  www.domain.com 
    ServerAlias  domain.com 
    ServerAlias  blog.domain.com 
    ServerAdmin web[email protected] 
    DocumentRoot /home/domain/www/domain.wiredground.com 
    ScriptAlias /cgi-bin/ "/home/domain/www/cgi-bin/" 
    <Directory /home/domain/www/cgi-bin> 
     AllowOverride None 
     Options ExecCGI 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

Có ai giúp được không?

Cảm ơn!

Trả lời

4

sử dụng này:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^blog\.domain\.com [NC] 
RewriteRule (.*) http://domain.com/blog/$1 [R=301,L] 
+1

bạn nên thoát khỏi dấu chấm trong regexp: 'RewriteCond% {HTTP_HOST}^blog \ .domain \ .com $ [NC] ' – Seybsen

+0

oops có cuộc gọi tốt nhờ –

+0

Cám ơn cả các câu trả lời của bạn. Tôi đã thử ý tưởng ban đầu và sau đó thay thế dòng thứ hai bằng RewriteCond của Seybsen nhưng không may mắn. Bạn có thể nghĩ ra một lý do mà khi tôi truy cập http://blog.domain.com rằng không có hành động nào được thực hiện và nó chỉ nằm ở http://blog.domain.com? – user1013465

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