【问题标题】:.htaccess URL Rewrite Help for .php extension.php 扩展名的 .htaccess URL 重写帮助
【发布时间】:2013-09-20 20:17:35
【问题描述】:

我是 URL 重写的新手和初学者... 我需要删除这些页面的 .php 扩展名以获得菜单链接。

<ul class="nav">
      <li><a href="index.php">Home</a></li>
      <li><a href="about.php">About</a></li>
      <li><a href="services.php">Services</a></li>
      <li><a href="rates.php">Rates</a></li>
      <li><a href="contact.php#main">Contact Us</a></li>
 </ul>

我正在为 .htaccess 文件使用以下代码

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
# Remove .php-extension from url
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^([^\.]+)/$ $1.php
# End of Apache Rewrite Rules
 </IfModule>

例如:

localhost/websitename/index.php

本地主机/网站名称/索引

localhost/websitename/about.php

本地主机/网站名称/关于

localhost/websitename/services.php

本地主机/网站名称/服务

localhost/websitename/rates.php

本地主机/网站名称/费率

localhost/websitename/contact.php#main

本地主机/网站名称/联系人主要

但是下面的重写规则显示的结果是这样的

localhost/websitename/services.php

localhost/services ...... 错误:找不到页面 . . . . . 等等等等……

我做错了什么? 如何实现这个简单的 URL 重写?

【问题讨论】:

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


    【解决方案1】:

    要隐藏 .php 扩展名,请将您的代码替换为:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    ## 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}/gta/$1.php -f
    RewriteRule ^(.+?)/?$ /gta/$1.php [L]
    

    【讨论】:

    • 谢谢!很多这正是我所需要的。我已经检查了托管服务器...它显示 [link]domain.com/abc/index [/link]
    • 谢谢!很多这正是我所需要的。我已经检查了托管服务器...它显示 (domain.com/abc/index) 但 (404 Page Not Found ERROR)。你能告诉我我又错过了什么吗?由于网页上的菜单链接与我之前在我的帖子中提到的相同,例如&lt;ul class="nav"&gt; &lt;li&gt;&lt;a href="index.php"&gt;Home&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="about.php"&gt;About&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="services.php"&gt;Services&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="rates.php"&gt;Rates&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="contact.php#main"&gt;Contact Us&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;
    • !我错过了什么......有什么想法吗?
    • .htaccess 位于网站目录的文档根目录中,是的!页面未显示...因为 MENU LINKS 上页面的物理路径是正确的。并且托管服务器上的目录和文件顺序类似于public_html/.htaccess,public_html/index.php,public_html/about.php,public_html/s‌​ervices.php,public_html/rates.php,public_html/contact.php,public_html/css/,public‌​_html/js/,public_html/images/
    • 当我通过点击索引页面的菜单链接访问页面yourdomain.com/about.php...它发送给我yourdomain.com/about,但它什么也没显示,只是找不到404页面 错误信息显示。
    【解决方案2】:

    看起来您只是缺少磁盘上文件路径的一部分:

      RewriteRule ^([^\.]+)$ websitename/$1.php
    

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多