我正在尝试在我的网站上使用漂亮的网址,而且我对htaccess了解不多,但经过一些搜索我最终得到了这个:
RewriteEngine On
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ content.php?action=$1&id=$2 [NC]
我想改变这个:
my site.com/CMS/content.PHP?action=content&ID=80
成:
my site.com/CMS/content/80
但不知怎的,它不起作用,我得到的是一个空白屏幕和404错误,
Failed to load resource: the server responded with a status of 404 (Not Found) --in-- /cms/files/plugin/tinymce/tinymce.min.js
关于404错误:它应该从mystie.com/files/plugin/tinymce/tinymce.min.js加载.js文件 - 不是 - mystie.com/cms/files/plugin/tinymce/tinymce.min.js
我的htaccess文件位于根文件夹中。难道我做错了什么?
我认为服务器没有读取我的.htaccess文件。我如何找出问题?
您需要将此规则放在/cms/.htaccess
中:
RewriteEngine On
RewriteBase /cms/
RewriteRule ^([a-z]+)/([0-9]+)/?$ content.php?action=$1&id=$2 [NC,L,QSA]
然后,您需要在页面的HTML:<head>
的<base href="/" />
部分中添加它,以便从该URL解析每个相对URL,而不是当前页面的相对URL。
RewriteEngine On
RewriteRule ^/cms/([a-z]+)/([0-9]+)$ content.php?action=$1&id=$2 [NC]
删除逃脱斜杠\
如果你的htaccess在root中,你需要确保包含子文件夹。试试这条规则。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cms/([a-z]+)/([0-9]+)/?$ /cms/content.php?action=$1&id=$2 [NC,L]
空白屏幕通常表示PHP错误。
我的猜测是你的脚本和样式通过相对URL链接。因为旧的URL是/cms/content.php
,所以URI基础是/cms/
,你的相关链接都被解析为/cms/
,我认为这就是你想要的。
但是,当您更改到/cms/content/1234
的链接时,URI基础将变为/cms/content/
,并且所有相关链接将使用此作为其基础,并且由于“内容”甚至不是真正的文件夹,所以这些链接将是404,并且您不会加载任何CSS内容或脚本。
将链接更改为绝对URL或在页面标题中指定URI基础(在<head> </head>
标记内):
<base href="/cms/" />