0

用于从链接中删除 .php 扩展名的简单 URL 重写我在 .htaccess 文件中使用以下代码

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

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

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

在托管服务器上上传网站后,上面的 mod_rewrite 代码将页面引导到我需要的以下链接......

domain.com/abc/index
domain.com/abc/about
domain.com/abc/services
domain.com/abc/rates
domain.com/abc/contact#main

但显示(404 Page Not Found ERROR)这些页面,即不显示确切的页面,如 index.php、about.php、services.php、rates.php 和 contact.php#main....等

任何人都可以让我知道我错过了什么吗?正如网页上的菜单链接一样

<ul class="nav"> <li><a href="index.php">Home</a></li> <li><a href="about.php">About</a></li> <li><a href="services.php">Services</a></li> <li><a href="rates.php">Rates</a></li> <li><a href="contact.php#main">Contact Us</a></li> </ul>

我也应该对这些菜单链接做些什么吗?

4

1 回答 1

4

从以下位置移动您的.php文件:

public_html/*.php

至:

public_html/gta/*.php

发生的情况是您正在访问:

http://domain.com/gta/about

它试图在以下位置找到.php文件:

http://domain.com/gta/about.php

但是根据您告诉我的文件位于上一个文件夹中,所以它只会给您一个 404 错误是正确的。

鉴于所有文件都在文件夹中,gta.htaccess可以是您所拥有的,但需要在public_html文件夹中,并且文件应该没有.htaccessgta

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

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

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
于 2013-09-21T09:00:22.150 回答