以下是.htaccess,我有(已更新):
Options -Multiviews
Options +FollowSymLinks
RewriteEngine On
RewriteBase / #saw this on many examples online, not sure exactly what purpose it serves
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)/(\w+.php)$ news.php?post=$2&cat=$1
基本上,我希望网址看起来像:
要翻译成:
有一些php代码可以防止加载错误的页面,所以希望使用'*'不会那么冒险。
知道为什么这不起作用吗?
修改 我按照下面的建议改变了这一行:
RewriteRule ^(.*)/(.*)$ ./news.php?cat=$1&post=$2
这返回了500错误但是,同一帖子提示我添加/因为“它开始在.com之后解析”(粗略引用)。这摆脱了500错误,但网站仍然返回404:
RewriteRule ^/(.*)/(.*)$ ./news.php?cat=$1&post=$2
编辑2: 确切的错误: 在此服务器上找不到请求的URL / poz / WineGlass / Vin。
此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。
我也尝试了以下内容:
RewriteRule ^./poz/(.*)/(.*)$ ./news.php?post=$2&cat=$1
poz是phovze.com的根文件夹
编辑3: 通过持续的网络研究,看起来GoDaddy.com服务器需要-Multiviews,但即使禁用此功能,问题仍然存在。
编辑4: 使用RegExr验证正则表达式
看起来好像服务器没有看到URL需要重写,只是试图访问不存在的文件。也许我的表达不正确?
编辑5: 在做了很多测试后,看起来服务器没有确定需要重写所请求的URL。我已经多次更改RewriteCond以使其按照此处的信息运行:
然而,我未能让它发挥作用。
显示文件夹/ poz /的错误似乎显示每404,所以我不再相信这是问题。我现在认为问题是URL要么没有绊倒要考虑重写的条件,要么表达式中的模式与URL不匹配。
答案 0 :(得分:0)
试试这个:
RewriteRule ^(.*)/(.*)$ ./news.php?post=$2.php&cat=$1
我认为在重写规则中使用phovze.com
部分是个问题,因为RewriteRule
的第一个参数仅在.com/