【问题标题】:Replace php extension with slash / using .htaccess用斜杠/使用 .htaccess 替换 php 扩展名
【发布时间】:2015-04-09 20:41:24
【问题描述】:

我想用.htaccess 重写php 扩展。我想用斜杠 / 替换 php 扩展名。例如,如果我有:http://example.com/about-us.php 将是 http://example.com/about-us/

如何修改这段代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

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

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]

RewriteRule .*[^/]$ $0/ [L,R=301]

谢谢大家!!!

【问题讨论】:

  • 你看到我的更新了吗??

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

你可以使用:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

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

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

【讨论】:

  • 当你得到404时,浏览器中显示的是什么URL?这些是唯一的规则还是你有更多?
【解决方案2】:

使用 Apache 2.2 和 Apache 1.3.7 测试

RewriteEngine On
RewriteBase /

一行就可以搞定

RewriteRule ^(.*)/$ /$1.php [L]

阿帕奇 2.2

http://www.domain.com/services.php

并得到它

http://www.domain.com/serviceshttp://www.domain.com/services/

Apache 1.3.7

如果你愿意

http://www.domain.com/services/

你需要..//$

RewriteRule ^(.*)//$ /$1.php [L]

更新

http.conf

LoadModule rewrite_module modules/mod_rewrite.so

可能的错误选项:必须有 MultiViews

文档根目录

<Directory "G:\Programme\Apache Group\Apache\htdocs">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

【讨论】:

  • 有了你的建议,现在这是完整的来源吗:RewriteEngine On RewriteBase / RewriteRule ^(.*)/$ /$1.php [L] RewriteRule ^(.*)//$ /$1。 php [L] ?
  • @Hawk :您只需要选择一种可能性。 RewriteEngine On RewriteBase / RewriteRule ^(.*)/$ /$1.php [L]RewriteRule ^(.*)//$ /$1.php [L]
【解决方案3】:

在html头中,包括:

<base href="http://www.yourdomain.com/">

在 htacces 中:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php

RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)\.[^.]+$ http://www.yourdomain.com/$1/ [L,R=301]

它对我有用。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多