1

是否可以使用.htaccess文件从我的所有 URL 中删除 .php 部分?

两个例子:

http://url.com/home.php
http://url.com/shops.php

变得:

http://url.com/home/
http://url.com/shops/

所有的帮助将不胜感激。

4

4 回答 4

4

这应该有效:

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

它将为您提供以 url 的最后一段命名的文件:

http://example.com/shops/shopname1/ -> shopname1.php

http://example.com/shops/ -> 商店.php

于 2013-04-14T19:25:02.483 回答
3

要将/$var/重写为/$var.php,然后将/$var.php重定向到/$var/ ,只需在.htaccess文件中使用这些指令:

# once per htaccess file
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9-_]+)/? /$1.php
RewriteRule ^([a-z0-9-_]+).php$ /$1/ [R]

如果您还想将特定 URL /shops/shopName1/重写为特定 URL /shopName1.php,然后将/shopName1.php重定向到/shops/shopName1/,那么您应该使用下面的代码而不是上面的代码:

# once per htaccess file
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9-_]+)/?$ /$1.php

RewriteCond %{REQUEST_URI} !^/shopName1.php$
RewriteRule ^([a-z0-9-_]+).php$ /$1/ [R]

RewriteRule ^shops/shopName1/?$ /shopName1.php
RewriteRule ^shopName1.php$ /shops/shopName1/ [R]

但是请记住/shops/shopName1/上没有变量,如果需要,请尝试一下。


似乎有关于重定向的问题DirectoryIndex home.php。但我认为,这是您想要的代码,但在这一次,我们排除了任何重定向:

DirectoryIndex /home.php
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/shopName1/?$
RewriteCond %{REQUEST_URI} !^/shopName2/?$
RewriteCond %{REQUEST_URI} !^/shopName3/?$
RewriteCond %{REQUEST_URI} !^/shopName4/?$
RewriteCond %{REQUEST_URI} !^/shopName5/?$
RewriteRule ^([a-zA-Z0-9-_]+)/?$ /$1.php

RewriteRule ^shops/shopName1/?$ /shopName1.php
RewriteRule ^shops/shopName2/?$ /shopName2.php
RewriteRule ^shops/shopName3/?$ /shopName3.php
RewriteRule ^shops/shopName4/?$ /shopName4.php
RewriteRule ^shops/shopName5/?$ /shopName5.php

只需使用您的逻辑添加更多条件和规则..

于 2013-04-14T20:06:38.567 回答
1

我建议停止对页面使用常规的 .php 文件,而不是使用框架或请求路由器,但是如果你真的想这样做,那么为了实现这一点,shops.phpshops需要创建一个 .htaccess 文件并添加跟随它:

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

这会将URL 栏上的所有内容重命名something.php为。something

.htaccess完整文件的示例是:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]
于 2013-04-14T19:24:27.733 回答
0
RewriteRule ^/(home|shops) /$1.php

第二本手册

RewriteRule ^/shops/shopname1/ /whateveryouneed.php
于 2013-04-14T19:22:55.723 回答