如何删除.php扩展专业的方式



我已经创建了我的第一个Php解决方案,但在从URL中删除.Php扩展时遇到了问题。它在根目录中工作,但在子文件夹中不工作?

例如从www.domain.com/index(或www.domain.com/)到达的www.domain.com/index.php

然后就变得棘手了。

例如。www.domain.com/en/europe/bikes/racer-bike.phpwww.domain.com/en/bikes/racer-bike不会有任何不同,而不会出现在www.domain.com/en/bikes/ and on index.php

我的.htaccess文件如下:

Options -MultiViews
RewriteEngine on
RewriteBase /
# Remove .php-extension from url
RewriteCond %{REQUEST_URI} ^/(.*).php$
RewriteRule ^(.*)$ %1 [L,QSA]
# Add trailing slash to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ $1/ [R=301,L]
# SSL
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R=301,QSA]

我尝试了一下,它就工作了:

我的目录结构

/
index.php
/sub
    file.php

我的htaccess是这样的:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/([^/]*)$
RewriteRule ^([^/]*)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ([A-Za-z]+)/(.*)$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1 -d
RewriteRule ^([A-Za-z]+)/(.*)$ $1/$2.php [NC,L,QSA]

试试

你做错了。。。大多数情况下,您不会为每个uri(路由)创建php文件。您不应该删除php扩展,您应该将所有uri指向index.php,并使用一些路由器来定义如何处理每个请求。或者你可以使用一些框架来实现这一点,比如laravel或symfony等。

相关内容

  • 没有找到相关文章

最新更新