首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从URL中删除.php

从URL中删除.php
EN

Stack Overflow用户
提问于 2015-04-09 15:21:00
回答 11查看 24.6K关注 0票数 15

Ubuntu 14.04LTS 32位

台灯

我知道这是个老问题但是..。

我需要它从可见的url中找到它的任何地方删除.php。它需要与/showthread.php?id=XX --> /showthread?id=XX一起工作

我甚至不能让它与/page.php -> /page一起工作。我试过这些:

用.php删除.htaccess扩展

重写

使用htaccess从urls中删除.php

如何停止.htaccess循环

它只是什么都没做。而其他.htaccess代码工作正常..。

代码语言:javascript
复制
<?php 
phpinfo();

在加载模块中列出mod_rewrite

代码语言:javascript
复制
<?php
 if(!function_exists('apache_get_modules') ){ phpinfo(); exit; }
 $res = 'Module Unavailable';
 if(in_array('mod_rewrite',apache_get_modules())) 
 $res = 'Module Available';
?>
<html>
<head>
<body>
<p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>

返回Module Available

尝试更多的东西

代码语言:javascript
复制
# Apache Rewrite Rules
 <IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteBase /

# Add trailing slash to url
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
  RewriteRule ^(.*)$ $1/ [R=301,L]

# Remove .php-extension from url
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^([^\.]+)/$ $1.php 

# End of Apache Rewrite Rules
 </IfModule>
代码语言:javascript
复制
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
代码语言:javascript
复制
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

即使这样也没有任何效果:

代码语言:javascript
复制
RewriteRule ^page$ page.php [L]

sudo service apache2 restart不会改变任何事情。

服务器重新启动没有任何改变。

我试着清除里面的其他代码,没有做任何改变。

我清除了100次浏览器缓存

我开始觉得它只是讨厌我。是什么导致了这一切?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2017-02-23 22:02:36

希望起了作用。

对我来说很管用。

代码语言:javascript
复制
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# For LocalHost !.php
RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTP_HOST} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=::1

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
票数 23
EN

Stack Overflow用户

发布于 2017-02-23 16:29:10

检查此链接

这是使用.htaccess的答案:

代码语言:javascript
复制
RewriteEngine On

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

在Windows上用WAMP测试和工作。

票数 8
EN

Stack Overflow用户

发布于 2017-02-23 12:10:46

尝试这样做可以完整地从文件中删除.php扩展,并避免无限循环:

代码语言:javascript
复制
RewriteEngine On
RewriteBase /
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]

此代码将在根/. htaccess中工作,如果要将其放置到子目录中的htaccess文件,请确保更改RewriteBase。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29542588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档