Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
.htaccess-从非www重定向到www后,将显示已删除的.php文件扩展名_Php_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess-从非www重定向到www后,将显示已删除的.php文件扩展名

.htaccess-从非www重定向到www后,将显示已删除的.php文件扩展名,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,我正在尝试从非www重定向到www url。我已经准备好从文件中删除.php文件扩展名并强制使用尾部斜杠,但现在当我从非www重定向到www时,下一步就是这样 使用www访问URL时,一切正常,删除扩展名并添加尾部斜杠 从mysite.com重定向时,一切正常,并重定向到www.mysite.com 但是当我尝试访问url时 mysite.com/example-page/ 它使我转向 www.mysite.com/example-page.php/ 如何从example-page.php中删除

我正在尝试从非www重定向到www url。我已经准备好从文件中删除.php文件扩展名并强制使用尾部斜杠,但现在当我从非www重定向到www时,下一步就是这样

  • 使用www访问URL时,一切正常,删除扩展名并添加尾部斜杠

  • 从mysite.com重定向时,一切正常,并重定向到www.mysite.com

  • 但是当我尝试访问url时

  • mysite.com/example-page/

    它使我转向

    www.mysite.com/example-page.php/

    如何从example-page.php中删除.php

    当前.htaccess代码:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/$ $1.php
    RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
    RewriteRule (.*)$ /$1/ [R=301,L]
    
    RewriteCond %{HTTP_HOST} !^www.mysite.com$
    RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301]
    
    试试这个规则:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC]
    RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
    RewriteRule (.*)$ /$1/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^([^/]+)/$ $1.php [L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f
    RewriteRule ^([^/]+)/([^/]+)/?$ /$1/$2.php [L]
    
    试试这个规则:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC]
    RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
    RewriteRule (.*)$ /$1/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^([^/]+)/$ $1.php [L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f
    RewriteRule ^([^/]+)/([^/]+)/?$ /$1/$2.php [L]
    

    你试过颠倒规则的顺序吗?顺便说一句,希望你没有任何子域,因为他们都指向主网站与该规则。我已尝试颠倒顺序,但问题仍然存在。现在我看到一个子门也被重定向了。你试过颠倒规则的顺序吗?顺便说一句,希望你没有任何子域,因为他们都指向主网站与该规则。我已尝试颠倒顺序,但问题仍然存在。现在我可以看到一个子域名也被重定向了。这个.htaccess代码非常好用!非常感谢。现在我需要看看我做错了什么并分析你的代码。再次感谢。编辑:但是,现在我无法访问子域。确定已编辑,请立即尝试。确保在不同的浏览器中进行测试。此.htaccess代码非常有效!非常感谢。现在我需要看看我做错了什么并分析你的代码。再次感谢。编辑:但是,现在我无法访问子域。确定已编辑,请立即尝试。确保在不同的浏览器中进行测试。