【问题标题】:php pages with htaccess redirect not working带有htaccess重定向的php页面不起作用
【发布时间】:2012-03-16 13:44:16
【问题描述】:

我正在尝试将非 www 重定向到我的 php 网站上的 www 并保持 url 干净而无需链接到 .php 页面。

当我为下面的非 www 使用建议的重定向到 www 时,页面链接不再转到正确的页面。例如:我有一个 page1.php,当我链接到 domain.com/page1(没有 .php)时,该页面将不再加载。我怎样才能解决这个问题?我是否必须修改所有链接并添加页面扩展名 (.php) 才能使链接正常工作?

我正在使用的htaccess:

重写引擎开启

#This bit rewrites your host name to include www
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NC,L]

#This bit does the codeigniter magic
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ /index.php/$1 [L]

【问题讨论】:

  • 您是否为/page1 设置了路由,或者page1.php 文件实际上不存在?
  • 我所有的页面都是 page.php 格式。但链接是 /page /page1 /page2 等...
  • 那么您是否使用 CodeIgniter?一般来说,它不是你在网站上放置的一些魔法,它使 URL 像你想要的那样工作。您需要将这些页面转换为控制器和视图,然后适当地设置您的路由。如果你已经这样做了,那么请给我们一些关于你的路由的细节,这样我们就可以帮助导致 .htaccess 指令不足以继续下去。
  • 不,它是一个带有 .php 页面的普通网站
  • 那么您需要删除最后 3 个指令。但是,您将不得不使用thepage.php 来访问页面,这意味着更改所有链接。我很好奇你之前是如何工作的......

标签: php .htaccess mod-rewrite redirect url-rewriting


【解决方案1】:

我找到了答案!

RewriteEngine On
RewriteBase /
#Rewrite bare to www
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多