【问题标题】:Rewrite URL with .htaccess to hide PHP extension使用 .htaccess 重写 URL 以隐藏 PHP 扩展
【发布时间】:2013-08-13 04:36:27
【问题描述】:

我有一个问题,我正在为特定应用开发网络服务。 上周我将备份从 server1 转移到 server2,因为那一刻我的 .htaccess 将不再工作。

我的网络服务的网址是: http://apps.holtesdesign.nl/inholland/apiv0/

这个 url 工作正常,加载 bugreport 模块: http://apps.holtesdesign.nl/inholland/apiv0/bugreport.php

但网址应该是: http://apps.holtesdesign.nl/inholland/apiv0/bugreport

当您打开最后一个 url 时,您会看到它会导致内部服务器错误。 你知道怎么可能吗?

我的 .htaccess 看起来像:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

服务器在 CentOS 上运行,我已经检查过 mod_rewrite 是否正常运行...

希望你们能帮帮我!

干杯,

杰尔默

【问题讨论】:

    标签: php .htaccess url mod-rewrite rewrite


    【解决方案1】:

    这将解决它:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule ^(.*)$ $1\.php
    

    如果它不起作用,请更正您的 Wamp 服务器的设置:

    1. 左键单击 WAMP 图标
    2. 阿帕奇
    3. Apache 模块
    4. 左键单击rewrite_module。

    【讨论】:

    • 不幸的是,它不会。我已经用你的代码替换了 .htacces 文件
    • .htaccess 文件在哪里?
    • .htaccess 文件位于同一目录中,现在我已将其删除,并将其放在与您的代码一起使用的父目录中。这是一个非常奇怪的问题!
    【解决方案2】:

    这将隐藏结尾的斜杠并在根目录和子目录中隐藏 .php。

    RewriteEngine On
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
    RewriteRule ^ %1 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*?)/?$ $1.php [NC,L]
    

    【讨论】:

      【解决方案3】:

      我的工作理念:

      # Options is required by Many HostSevice
      Options +MultiViews
      
      RewriteEngine on
      
      # For .php & .html URL's:
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^([^\.]+)$ $1.php [NC,L]
      RewriteRule ^([^\.]+)$ $1.html [NC,L]
      

      在您网站的根文件夹中的 .htaccess 文件中使用此代码:示例

      离线 - wamp\www\YourWebDir

      在线 - public_html/

      重要提示:如果它不起作用,请更正 Wamp 的设置 服务器:1) 左键单击 WAMP 图标 2) Apache 3) Apache 模块 4) 左 点击rewrite_module

      【讨论】:

        【解决方案4】:

        试试这个.. 它有效! :)

        Options +FollowSymLinks
        RewriteEngine on 
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteCond %{REQUEST_FILENAME}\.php -f 
        RewriteRule ^(.*)$ $1.php
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-02
          • 2012-04-19
          • 1970-01-01
          • 2013-12-24
          • 1970-01-01
          • 2017-01-29
          • 1970-01-01
          • 2021-01-23
          相关资源
          最近更新 更多