Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用.htaccess重定向子域_Php_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Php 使用.htaccess重定向子域

Php 使用.htaccess重定向子域,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我在我的主机上设置了一个子域:indiantemes.indianradio.net.au,它是从我的/public\u html文件夹中的一个文件夹中提取的:/public\u html/indiantemes.com.au 我正在尝试编写一个.htaccess规则,将其重定向到该文件夹,但保留用户键入的原始url:indiantemes.indianradio.net.au 我只能让重定向工作,即(indianradio.net.au重定向到indianradio.net.au/indian

我在我的主机上设置了一个子域:
indiantemes.indianradio.net.au
,它是从我的
/public\u html
文件夹中的一个文件夹中提取的:
/public\u html/indiantemes.com.au

我正在尝试编写一个.htaccess规则,将其重定向到该文件夹,但保留用户键入的原始url:
indiantemes.indianradio.net.au

我只能让重定向工作,即(
indianradio.net.au
重定向到
indianradio.net.au/indianradio.com.au/
),但我似乎无法让重定向工作,因此用户看到的url停留在:
indianradio.net.au
。大多数的图像URL都被破坏了,直到我能够让重定向正常工作

我使用的.htaccess规则是:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^indiantimes\.indianradio\.net\.au$ [OR]
RewriteCond %{HTTP_HOST} ^www\.indiantimes\.indianradio\.net\.au$
RewriteRule ^/?$ "http\:\/\/indianradio\.net\.au\/public_html\/indiantimes\.com\.au" [R=301,L]

重定向有什么不对吗?任何帮助都将不胜感激!提前谢谢

对于子域,通常建议在apache中添加一个virtualhost,而不是使用.htaccess(性能和更跨平台)。
但是,您可能会发现以下链接适用于无法编辑apache配置文件的情况:(摘要:使用mod proxy并将P标志添加到重写规则)

  • 转到
    /etc/apache2/sites available
    (在终端中使用
    cd

  • 添加名为:indiantemes.indianradio.net.au的新文件,示例内容:

    <VirtualHost *>
        DocumentRoot /var/www/indianradio.net.au/public_html/indiantimes.com.au/
        ServerName indiantimes.indianradio.net.au
    
        <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews +Includes
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
    
    
        ErrorLog ${APACHE_LOG_DIR}/error-logfile.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access-logfile.log combined
    
    </VirtualHost>
    
    
    DocumentRoot/var/www/indianradio.net.au/public_html/indiantemes.com.au/
    ServerName indiantemes.indianradio.net.au
    选项索引如下符号链接多视图+包含
    不允许超限
    命令允许,拒绝
    通融
    ErrorLog${APACHE_LOG_DIR}/error-logfile.LOG
    #可能的值包括:调试、信息、通知、警告、错误、临界值、,
    #警惕,埃默格。
    日志级别警告
    CustomLog${APACHE_LOG_DIR}/access-logfile.LOG组合
    
  • 已启用apache2/sites中的文件链接


  • 在终端:
    ln-s./indiantemes.indianradio.net.au../sites enabled/
    的站点可用文件夹中,注意尾部的
    /

    您必须将子文件夹名称替换为与子域相同的名称
    (indiantemes.com.au->indiantemes)


    这是共享主机,因此我无法使用virtualhost。我正在查看您现在发送的链接,了解如何修改htaccess。谢谢@McWayWeb不客气,请注意,几乎所有共享主机帐户都有添加子域的接口(以正确的方式)
    RewriteRule^/?$“http\:\/\/indianradio\.net\.au\/public\u html\/indiantemes\.com\.au”[R=301,L]
    应该是这样的:
    RewriteRule^/indiantemes.com.au/$1[R=301,L,P]
    (未经测试,不久前已从apache切换)
    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^indiantimes\.indianradio\.net\.au$
    RewriteCond %{REQUEST_URI} !^/indiantimes/
    RewriteRule (.*) /indiantimes/$1