我没有太多使用web.config文件的经验,但我想做的是将所有请求重定向到index.php,只添加?url=REQUESTED_PAGE
例如
如果你去domain.com/about.php?query=string
它会将url重写为用户的domain.com/about/,但会处理urldomain.com/index.php?url=about.php&query=string。
我们的想法是拥有漂亮的用户友好的urls,同时index.php确定向用户显示哪个页面。(我使用的是smarty,所以要使用哪个模板)
编辑:我正在寻求web.config的帮助,而不是.htaccsess,我被限制在托管的客户端,不幸的是,这不是apache,我能找到的唯一可以或不能与iis7.5一起工作的模块是gb45,我无法获得资金:(
编辑:我的最新尝试是
<rules>
<rule name="page proc" stopProcessing="true">
<match url="domain.org.uk(.*?)\?(.*)" />
<action type="Redirect" url="{R:0}?url={R:1}?{R:2}" />
</rule>
</rules>我想我已经很接近了,但仍然没有工作。
已解决::!最终结果!
<rewrite>
<rules>
<rule name="page proc">
<match url="(.*?)\/" />
<action type="Rewrite" url="/index.php?url={R:1}" appendQueryString="false" logRewrittenUrl="true" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{QUERY_STRING}" pattern="(.*?)(css|js|pdf|jpg|png|gif)" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>发布于 2011-11-19 05:13:51
您需要创建一个包含以下内容的.htaccess文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]这会将所有请求(除非它是现有的文件或目录)传递给您的index.php脚本,您将能够通过执行以下操作找出用户在您的PHP脚本中请求的内容:
<?php
echo $_GET['url'];
?>因此,您可以在斜杠处拆分传递的url参数,并将其传递给正确的控制器或其他任何东西。
不重写现有文件或目录的原因是静态文件,如图像、样式表、JavaScript文件等。否则,对那些确实存在的文件的请求仍将传递到index.php脚本。
此外,RewriteRule后的QSA标志允许您继续在URL中使用查询字符串,如果您希望搜索表单和分页,如果您也喜欢对这些内容使用$_GET参数,而不是URL段。
发布于 2011-11-19 04:52:09
以下是您所要求的解决方案:
RewriteRule (.*) index.php?url=$1 [NC,L]请告诉我它能不能用。
https://stackoverflow.com/questions/8188112
复制相似问题