其实我有这个问题:
内部网页的网址就像是
的 http://example.co.in/page.php?id=2
我想要的实际上就像是 的 http://example.co.in/AboutUs
仅使用.htaccess是否可行?我的.htaccess代码在下面给出,但它给出了这样的输出
http://example.co.in/page/2
Options -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/page\.php\?id=([0-9]+)\s [NC]
RewriteRule ^ /page/%1? [R=301,L]
RewriteRule ^page/([0-9]+)$ /page.php?id=$1 [L]
我尝试了很多但没有成功!
答案 0 :(得分:0)
每个页面都需要一个规则。以下是根据您的示例开始的方法:
<强> /公司简介强>
Options -MultiViews
RewriteEngine On
RewriteRule ^AboutUs$ page.php?id=2 [QSA]
这将保留可能使用的任何查询字符串,添加id=2
。这是内部重写,因此访问AboutUs
实际上会page.php?id=2
,这听起来像你想要的。为每个页面添加一个RewriteRule
。它是按要求进入.htaccess文件的。
<强> /page.php?id=2 强>
如果您还想阻止page.php?id=2
工作,并将其重定向到AboutUs
,请为每个页面添加这两个指令。
RewriteCond %{QUERY_STRING} (^|&)id=2(&|$) [NC]
RewriteRule ^page\.php$ AboutUs? [R=301,L]
这将使用提供的额外查询字符串参数重定向,但整个查询字符串将被删除而不会传递(?
之后的AboutUs
)。
备注强>
显然,为您创建规则的每个页面(id号和AboutUs部分)更改相关部分,但保留其他部分与每个部分完全相同。
答案 1 :(得分:0)
Hiii,全部!感谢大家的支持和建议 以下代码对我来说非常合适。希望它可以帮助任何人。
# Tell PHP that the mod_rewrite module is ENABLED.
SetEnv HTTP_MOD_REWRITE On
RewriteEngine on
RewriteBase /
#FOR INTERNAL PAGES(rewrite "/page.php?name=about us" to "AboutUs")
RewriteCond %{QUERY_STRING} ^name=([^&\s]+)$
RewriteRule ^(?:page\.php|)$ /%1? [R=301,L]
RewriteCond %{QUERY_STRING} ^name=([^&\s]+)&name=([^&\s]+)$
RewriteRule ^(?:page\.php|)$ /%1/%2? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\s\/]+)/?$ page.php?name=$1&r [L,QSA]