【问题标题】:Remove php extension on localhost apache server?删除 localhost apache 服务器上的 php 扩展?
【发布时间】:2015-07-07 22:07:17
【问题描述】:

我试图让您在查看 php 文件时不需要 .php 扩展名。我当前的配置如下:

<VirtualHost *:80>
    DocumentRoot /var/www/server
    ServerName localhost

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteRule ^([^/\.]+)/?$ $1.php  [L,QSA]

</VirtualHost>

但是,例如,当我尝试访问 login.php 之类的文件作为登录名时,它不起作用,因为我得到了 404。我的服务器设置有点奇怪,/var/www/server 是指向另一个文件夹Dev/server/ 的符号链接。另外,因为它是localhost,所以我通过localhost/project/login.php 访问它。

【问题讨论】:

  • 对于初学者来说是RewriteEngine On?这看起来是一篇关于这个主题的好文章:alexcican.com/post/…
  • 我在 RewriteRule 上方添加了它,但还是一样。我会检查那个链接:)
  • 嗯,好的。因此,我只是尝试了文章建议的内容,但没有成功,但是...我的服务器文件夹中也有其他项目,我尝试了这些项目,它们奏效了。我认为可能是因为项目的文件夹名称中有一个点?
  • 是的!也许我忽略了一个重要的细节,因为项目文件夹的名称中有一个点,它一定是混淆了。

标签: php apache


【解决方案1】:

您说得对,如果 URI 在路径中包含句点,正则表达式规则看起来会失败。这很糟糕,因为 RFC 没有说它们是无效的。

你可以试试这个:

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

这将导致:http://test.com/test/test.test/test.php 请求类似http://test.com/test/test.test/test

不过,我会对其进行更多测试。你可能想看看这样的 .htaccess 测试器:http://htaccess.madewithlove.be/

如果测试需要,REQUEST_FILENAME 可以换成REQUEST_URI

【讨论】:

  • 谢谢!太完美了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 2018-10-10
相关资源
最近更新 更多