嗨,我有下面的isapi重写规则在IIS 6上工作。
它改写:
http://www.mysite.com/index.php?category=white-wine至:
http://www.mysite.com/white-wine.htaccess目录:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/]+)/?$ /?category=$1 [NC,QSA,L]我现在试图做几乎相同的规则,但在一个文件夹更深。编辑规则在站点根目录中的同一个.htaccess文件中,我只想将上面的规则应用到根名为products的文件夹中的index.php文件中。
我想重写:
http://www.mysite.com/product/index.php?product=the-chosen-product 至:
http://www.mysite.com/product/the-chosen-product我试过这样做:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/]+)/product/?$ /product/?product=$1 [NC,QSA,L]虽然我在php页面上看到了大量错误,但这是行不通的:
Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration
Warning: require_once(http://www.mysite.com/myfolder/framework/library.php) [function.require-once]: failed to open stream: no suitable wrapper could be found我最初是从第一条规则中得到这些错误的,但由于这一点现在起作用了,我想一定有可能以某种方式执行第二条规则?
另外,我将如何更改它而不是显示:
http://www.mysite.com/product/my-chosen-product 它将显示:
http://www.mysite.com/product/my-chosen-product.htm我对这件事很陌生。我看过许多其他的帖子,我完全搞不懂,尤其是在isapi重写的时候,我认为它与mod_rewrite的工作方式有点不同。
发布于 2011-07-08 16:22:07
RE:“警告: require_once()函数.要求-一次: URL文件访问被禁用.”。
不要使用require_once(http://www.mysite.com/myfolder/framework/library.php) --这在您的服务器上是被禁止的(但是即使启用了它,也不建议这样做)。使用require_once($_SERVER['DOCUMENT_ROOT'] . '/myfolder/framework/library.php')代替。
RE:重写规则(针对产品)。用这个代替:
RewriteCond ${REQUEST_URI} !^/product/index\.php
RewriteRule ^product/([^/]+)/?$ /product/index.php?product=$1 [NC,QSA,L]所以你的整个.htaccess应该是这样的:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /index.php?category=$1 [NC,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^product/([^/]+)/?$ /product/index.php?product=$1 [NC,QSA,L]我已经对您的规则做了一些小的更改:指定的index.php立即,否则IIS将不得不找出正确的脚本名称以后。这需要一些很小但仍然需要资源来做到这一点。
这些规则将适用于无扩展URL(例如http://www.mysite.com/product/the-chosen-product)。如果您想在这样的URL中拥有.htm扩展,您必须这样做:
( a)立即在应用程序中生成这些URL
( b)修改重写规则:将RewriteRule行替换为:
RewriteRule ^([^/]+)\.htm$ /index.php?category=$1 [NC,QSA,L]
RewriteRule ^product/([^/]+)\.htm$ /product/index.php?product=$1 [NC,QSA,L]有了这样的更改,旧的无扩展URL(没有.htm)将不再工作。
https://stackoverflow.com/questions/6615178
复制相似问题