【问题标题】:PHP/.htaccess - Redirect visitor when accessing page with .php extensionPHP/.htaccess - 访问带有 .php 扩展名的页面时重定向访问者
【发布时间】:2013-09-18 19:20:35
【问题描述】:

我希望我的访问者在访问带有 .php 扩展名的页面时被重定向。为了更清楚一点:

我目前已将 .htaccess 设置为从 URL 中删除 .php 扩展名,当访问者键入 www.mysite.com/about/ 时,它会加载 www.mysite.com/about.php 内容。我基本上希望同样的事情反过来发生:

当访问者在地址栏中输入 www.mysite.com/about.php 时,我想加载相同的内容,但将 URL 重定向/更改为 www.mysite.com/about/ 并出现在地址栏中。

提前致谢! 保罗 G.

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    您可以使用此代码:

    # To externally redirect /index.php to /
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\sindex(\.php)?[\s?] [NC]
    RewriteRule ^ / [R=301,L]
    
    ## hide .php extension
    # To externally redirect /dir/foo.php to /dir/foo
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC]
    RewriteRule ^ %1 [R=301,L]
    
    # To internally forward /dir/foo to /dir/foo.php
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^(.+?)/?$ /$1.php [L]
    

    【讨论】:

    • 这里只是一个小问题。现在,当键入 www.mysite.com/index.php 时,URL 变成 www.mysite.com/index/ (我不喜欢)我如何 301 重定向“www.mysite.com/index/”和“ www.mysite.com/index.php”改为“www.mysite.com/”?
    【解决方案2】:

    您好,这似乎对我有用:

    RewriteEngine on
    RewriteRule ^(.*)\.php$ $1 [R]
    

    基本上这会从您的 url 中丢弃 .php 并保留其他所有内容。

    【讨论】:

    • 我该如何在 localhost 上实现这个(它似乎不起作用)?我想先在本地测试它,然后再在实时服务器上进行更改。
    • 您可以将代码放在您的 Web 应用所在的 .htaccess 文件中。或者,如果您在 httpd.conf 文件中为您的应用定义了虚拟主机,您可以将代码放在那里。
    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2011-02-04
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多