.htaccess漂亮的URL不起作用

时间:2015-03-09 14:02:18

标签: php .htaccess mod-rewrite clean-urls pretty-urls

我试图在我的网站上使用漂亮的网址,而且我对htaccess了解不多,但经过一些搜索,我最终得到了这个:

RewriteEngine On
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ content.php?action=$1&id=$2 [NC]

我试图改变这个:

  

mysite.com/cms/content.php?action=content&id=80

成:

  

mysite.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文件。我如何找出问题?

5 个答案:

答案 0 :(得分:0)

在其他人之前,您的网址中有/cms/,因此您需要将RewriteRule更改为以下内容:

RewriteRule ^cms/([a-z]+)\/([0-9]+)\/?$ content.php?action=$1&id=$2 [NC]

此外,我希望您知道.htaccess无法在某些服务器上运行(例如nginx或某些自定义服务器),甚至在Apache服务器上也可能mod_rewrite被禁用

答案 1 :(得分:0)

RewriteEngine On
RewriteRule ^/cms/([a-z]+)/([0-9]+)$ content.php?action=$1&id=$2 [NC]

删除转义斜杠\

答案 2 :(得分:0)

我的猜测是你的脚本和样式通过相对URL链接。由于旧网址为/cms/content.php,因此URI基数为/cms/,您的相关链接全部已解析为/cms/,我认为这是您想要的。

但是,当您将链接更改为/cms/content/1234时,URI基础将变为/cms/content/,所有相关链接将使用此作为基础,并且由于“内容”甚至不是真正的文件夹,所有这些链接都是404,您不会加载任何CSS内容或脚本。

更改指向绝对网址的链接或在网页标题中指定URI基础(在<head> </head>标记内):

<base href="/cms/" />

答案 3 :(得分:0)

您需要将此规则放在/cms/.htaccess

RewriteEngine On
RewriteBase /cms/

RewriteRule ^([a-z]+)/([0-9]+)/?$ content.php?action=$1&id=$2 [NC,L,QSA]

然后,您需要在页面的HTML <head>部分添加此内容: <base href="/" /> ,以便从该网址解析每个相对网址,而不是当前网页的相对网址

答案 4 :(得分:0)

如果你的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错误。