从URL中删除php扩展-使用htaccess的唯一URL除外

从URL中删除php扩展-使用htaccess的唯一URL除外,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在使用这段代码从我的URL的末尾删除.php,使它们更加SEF RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC] RewriteRule ^ /%1 [R=301,NE,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L] 这是通用

我正在使用这段代码从我的URL的末尾删除.php,使它们更加SEF

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteRule ^ /%1 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]
这是通用的,适用于每个UR,但我想知道如何为一个且只有一个URL创建一个例外,即:
http://www.domain.com/services
http://www.domain.com/services.php
不影响其他人。这可能吗

我尝试了simples重定向,但进入了一个循环

! 编辑! 我没有提到我也有这些规则:

添加www.

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
删除索引(索引中的扩展名.php已经被删除)

你能试试这个吗

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

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

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

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

  • 向禁用的
    services.php=>services
  • 添加另一条规则,以强制执行
    services=>services.php
    ,因为第一条规则不阻止用户手动使用
    services
    url
完整
.htaccess

# domain.tld > www.domain.tld (visible)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# services > services.php (visible)
RewriteRule ^services/?$ services.php [R=301,QSA,L]

# filename > filename.php (transparent)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

# filename.php > filename (visible, exception for services.php)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteCond %{REQUEST_FILENAME} !services\.php
RewriteRule ^ /%1 [R=301,NE,L]

# index > /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]
你应该:

  • 向禁用的
    services.php=>services
  • 添加另一条规则,以强制执行
    services=>services.php
    ,因为第一条规则不阻止用户手动使用
    services
    url
完整
.htaccess

# domain.tld > www.domain.tld (visible)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# services > services.php (visible)
RewriteRule ^services/?$ services.php [R=301,QSA,L]

# filename > filename.php (transparent)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

# filename.php > filename (visible, exception for services.php)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteCond %{REQUEST_FILENAME} !services\.php
RewriteRule ^ /%1 [R=301,NE,L]

# index > /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]
你应该:

  • 向禁用的
    services.php=>services
  • 添加另一条规则,以强制执行
    services=>services.php
    ,因为第一条规则不阻止用户手动使用
    services
    url
完整
.htaccess

# domain.tld > www.domain.tld (visible)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# services > services.php (visible)
RewriteRule ^services/?$ services.php [R=301,QSA,L]

# filename > filename.php (transparent)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

# filename.php > filename (visible, exception for services.php)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteCond %{REQUEST_FILENAME} !services\.php
RewriteRule ^ /%1 [R=301,NE,L]

# index > /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]
你应该:

  • 向禁用的
    services.php=>services
  • 添加另一条规则,以强制执行
    services=>services.php
    ,因为第一条规则不阻止用户手动使用
    services
    url
完整
.htaccess

# domain.tld > www.domain.tld (visible)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# services > services.php (visible)
RewriteRule ^services/?$ services.php [R=301,QSA,L]

# filename > filename.php (transparent)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

# filename.php > filename (visible, exception for services.php)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteCond %{REQUEST_FILENAME} !services\.php
RewriteRule ^ /%1 [R=301,NE,L]

# index > /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]

您可以为每个php文件添加一条规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^services  /services.php [L]

您可以为每个php文件添加一条规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^services  /services.php [L]

您可以为每个php文件添加一条规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^services  /services.php [L]

您可以为每个php文件添加一条规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^services  /services.php [L]

我相信只要对
.php
删除规则做一点小小的更改就可以了:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+?)\.php[\s?] [NC]
RewriteRule !^services\.php$ /%1 [R=301,NE,NC,L]

我相信只要对
.php
删除规则做一点小小的更改就可以了:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+?)\.php[\s?] [NC]
RewriteRule !^services\.php$ /%1 [R=301,NE,NC,L]

我相信只要对
.php
删除规则做一点小小的更改就可以了:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+?)\.php[\s?] [NC]
RewriteRule !^services\.php$ /%1 [R=301,NE,NC,L]

我相信只要对
.php
删除规则做一点小小的更改就可以了:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+?)\.php[\s?] [NC]
RewriteRule !^services\.php$ /%1 [R=301,NE,NC,L]



所以你不想把
/services
重写为
/services.php
?很抱歉,我会尽量解释得更清楚。我的网站按计划运行,一切正常。php重写时没有它。我想要一个而且只有一个URL,在这个例子中是服务,来拥有php扩展,所以你不希望
/services
被重写为
/services.php
?很抱歉,我会尽量解释得更好。我的网站按计划运行。php重写时没有它。我想要一个而且只有一个URL,在这个例子中是服务,来拥有php扩展,所以你不希望
/services
被重写为
/services.php
?很抱歉,我会尽量解释得更好。我的网站按计划运行。php重写时没有它。我想要一个而且只有一个URL,在这个例子中是服务,来拥有php扩展,所以你不希望
/services
被重写为
/services.php
?很抱歉,我会尽量解释得更好。我的网站按计划运行。php重写时没有它。我想要一个而且只有一个URL,在这个例子中是服务,有php扩展。在这个例子中没有发生任何事情对不起,这是“服务”,不是“统计”。谢谢Joan,我注意到了,我用服务而不是统计试过了。在这个例子中没有发生任何事情对不起,这是“服务”,不是“统计”。谢谢Joan我注意到了,我试过使用服务而不是统计数据。这个案例没有发生任何事情抱歉,这是“服务”,不是“统计数据”。谢谢Joan我注意到了,我试过使用服务而不是统计数据。这个案例没有发生任何事情抱歉,这是“服务”,不是“统计数据”。谢谢Joan,我注意到了,我确实尝试过使用服务而不是统计数据。我应该在哪里特别提到我希望.php出现在URL上的一个php文件?您需要提供类似于,
,,它会自动识别service.php。我应该在哪里特别提到我希望.php出现在URL上的一个php文件?您需要提供类似于,
,,它会自动识别service.php。我应该在哪里特别提到我希望.php出现在URL上的一个php文件?您需要提供类似于,
,,它会自动识别service.php。我应该在哪里特别提到我希望.php出现在URL上的一个php文件?你需要提供这样的链接,
,它会自动识别service.php。我只是在一个空白网站上重试了一下,它似乎可以工作。您还有其他
.htaccess
文件/规则吗?您好,谢谢您的输入。我确实有更多的规则可能会影响:#将非WWW转换为WWW#RewriteCond%{HTTP_HOST}^www\。重写规则^(.*)${HTTP_HOST}/$1[R=301,L]#和要删除索引#RewriteCond%{THE_REQUEST}{A-Z]{3,}\s(.*)/INDEX/?([^\\?]*)[NC]重写规则^%1/%2[R=301,L]好的,我发现了我的错误。对于第二个块,2
RewriteCond
仅应用于第一个下一个
RewriteRule
。查看我的编辑,了解一个正在运行的
。htaccess
它确实运行了整个软件包,非常感谢您抽出时间!我只是在一个空白的网站上重试了一下,它似乎起了作用。你还有别的
吗。