2017-03-04 139 views
0

我正在使用PHP在本地机器上的网站上工作。
在我的.htaccess文件,我有以下行:.htaccess和GET []变量

RewriteRule ^project-details/([a-zA-Z0-9-]+)/ project-details.php?pn=$1 [NC,L] 

在产品页面上,我有一个包含像./product-details/icecap-mouse249/链接...这.htaccess文件又将采取并指定“项目icecap-mouse249“到行尾的”pn“:?pn=$1 [NC,L]

当点击该项目时,该人将被带到产品详情页面。在该页面中,我有以下行:

$pn = $_GET['pn']; 

这允许URI拉“PN”值,并将其分配给变量$pn并利用可变从数据库中提取数据和显示的所有信息的特定产品。

所以,它在我的机器上本地工作,但是当我上传文件时,页面不会拉动任何东西$_GET[pn]

产品详细信息页面的工作,因为当我硬编码值$pn为:

$pn = 'icecap-mouse249'; 

页面显示正常......从数据库拉数据。

我已经完成了phpinfo();来查看是否启用了mod_rewrite,但phpinfo页面的“Loaded Modules”部分未显示。我做了一个CTRL + F来查看我是否可以通过FIND工具找到'mod_rewrite',但没有弹出。

绊倒我的东西是它在我的机器上在本地工作。

我花了一个小时与我的主机提供商......他们没有任何帮助。

我希望我解释自己的权利,任何洞察力将不胜感激。谢谢。

回答

0

你的代码是正确

看起来你是在处理特殊的服务器配置。 尝试禁用可能导致1and1问题的多视图(添加到.htaccess),并尝试单独添加AllowOverride all。

Options -MultiViews 
AllowOverride All 

上传文件后,当您点击链接时,页面是否显示任何错误?它显示任何东西吗?

你说,你有你的链接指向./product-details/icecap-mouse249/。请确保你在哪里把你的链接的页面是根diretory这样的:

http://example.com/page-with-links.php

但是,如果与链接的页面是根目录外将无法正常工作。

http://example.com/xyz/page-with-links.php

这是因为你被要求寻找^project-details这意味着

http://localhost/project-details/any-string/http://example.com/project-details/any-string/

+0

感谢您看在我的代码。我的所有文件和.htaccess文件都位于根目录中。奇怪的是,网页在我的笔记本电脑(XAMPP)上的本地服务器上工作,它在GoDaddy服务器上工作(当我在那里时,但我已经转移到1and1)......这就是它的地方不工作...在1and1服务器上。我已经与客户服务部门进行了沟通,但他们所做的仅仅是确认apache配置中是否启用了mod_rewrite;他们说他们是。所以,我现在很困惑。 – Lexiriam

+0

我编辑了答案。尝试添加到.htacces“选项-MultiViews和AllowOverride全部”。 – docliving

+0

我尝试添加您推荐的内容,但仍然无法正常工作。我需要继续排除故障。我已经在StackOverflow上做了一些相同的研究,可悲的是没有为我工作。谢谢,无论如何。 – Lexiriam