Правило за пренаписване на URL на IIS 7 / Ограничаване на потребителска заявка за конкретна папка / файл / типове файлове

Опитвам се да направя поддомейн от директория (създадена от .htaccess) да се използва като основна страница, като се започне като http://domain.com/sub/2/3/4.html и се превръща в http://sub.domain.com/2/3/4.html.

Системата с папки изглежда така:

www\sub\2\3\ 

в www има index.html а в подпапката има различно index.html.

В момента имам този код, който намерих на друг сайт:

Options -Indexes +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^domain.com [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] RedirectMatch 301 ^/sub/(.*)$ http://sub.domain.com/$1 

Успешно е с промяна на пътя на домейна към http://sub.domain.com/, но не е успешно при промяна на страницата, показана от индекса в www директория към индекса в поддиректорията.

Също така не е успешно при разрешаването на отваряне на други страници, т.е.не позволява sub.domain.com/2/3/4.html. Ако някой може да даде някакъв съвет, ще бъде много благодарен.

Намерих фантастичен код за .htaccess, който преобразува всяка папка в основната директория www в поддомейни, напр. www / somefolder се превръща в somefolder.domain.com, можете също да го настроите така, че всяка директория в дадена директория да стане поддомен, напр. www / folder / somefolder се превръща в somefolder.domain.com

кодът по-долу е настроен да пренасочва директорията вътре в определена директория

Options +FollowSymLinks -Multiviews RewriteEngine on RewriteBase / # # Canonicalize the hostname RewriteCond www.%{HTTP_HOST} ^(www)\.(example\.com) [OR] RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.(example\.com) [OR] RewriteCond %{HTTP_HOST} ^([^.]+)\.www\.(example\.com) [OR] RewriteCond %{HTTP_HOST} ^([^.]+)\.(example\.com). [OR] RewriteCond %{HTTP_HOST} ^([^.]+)\.(example\.com):[0-9]+ RewriteRule (.*) http://%1.%2/$1 [R=301,L] # # If subdomain is NOT www RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] # Extract (required) subdomain to %1 RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ # Rewrite if requested URL resolves to existing file or subdirectory in /subdomains// path RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -d RewriteRule (.*) /subdomains/%1/$1 [L] 

просто променете „example.com“ на вашия домейн, напр. 'domain.com' се уверете, че не премахвате нито един от другите символи, освен точки. понастоящем директорията в папката, наречена „поддомейни“, ще се промени в поддомейн, напр. www / subdomains / blog ще се превърне в 'blog.domain.com', за да го настрои просто да сменя папките в директорията www на поддомейни напр. www / blog ще се превърне в „blog.domain.com“

ако искате автоматично да препращате към поддомейн напр. blog.domain.com ще трябва да поставите това в края на другия код

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

надявам се това да работи за всички, на които ми бяха нужни векове, за да намеря решение на този ужасен проблем, благодарение на Reblerebel

Трябва да конфигурирате Apache виртуален хост за sub.domain.com с www/sub като своя DirectoryRoot.

  • как бихте направили това?
  • httpd.apache.org/docs/2.0/vhosts/examples.html
  • така и да го сложа във файла .htaccess, защото не мога да редактирам други предпочитания
  • Не, това не е конфигурация .htaccess. Трябва да редактирате apache2.conf или httpd.conf на apache. Тогава ще трябва да помолите администратора си да го направи.
  • В момента използвам безплатен маркуч, в който мога да FTP, за да отиде в директорията www?

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?