2

我只是找不到我需要的正确解决方案,所以我希望有人能在这里帮助我。

我现在有这个文件的网站:

/admin/
/images/
/js/
about.php
index.php
news.php
questions.php

所以我现在的网址是: www.mydomain.com/about.php www.mydomain.com/news.php ...

我想要 www.mydomain.com/about/, w​​ww.mydomain.com/news/,...

我已经尝试了很多我发现的东西,但它们都没有像它应该的那样工作,或者它弄乱了其他东西。

我最接近的是:

RewriteRule about/ about.php
RewriteRule about about.php

但是,如果我在包含名称的代码中使用一些图像(例如图像/about-me.jpg),这也会搞砸 - 可能是因为第二个语句。

4

3 回答 3

2

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

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 [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]
于 2012-12-10T12:03:12.020 回答
1

为了让生活更简单,我将停止使用基于目录的 URL

/关于/

并使用更简单的文件基础 URL

/关于

该额外的斜线将页面移动到子目录中,并且页面中的所有相对引用都将中断。

或者,您可以更改所有链接、包含和图像 URL,以确保它们都相对于域的根目录。为此,您始终在 URL 前添加一个斜杠 (/) 或将其设为完整 URL。

并使您的规则更具体:

重写规则 ^/about$ about.php

那些额外的 ^$ 表示开始和结束,所以它必须是完全匹配的。

于 2012-12-10T14:03:07.353 回答
0

这对我有用

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(about)$ about.php
于 2014-11-15T03:41:40.533 回答