我想将my.example.com/newsletter.php或example.com/newsletter.php替换为example.com/newsletter /
我试过了:
RewriteEngine On
RewriteRule ^([a-z]+)$ /$1.php [L]
如果我想要http://example.com/communities/index.php?sub_id=1
怎么办?是一个特定的名称,如http://example.com/communities/Bridlewood/
可能?
答案 0 :(得分:1)
其他答案对于领先的斜杠是正确的,你应该注意到斜杠的可能性(记住'$'标志着一个字符串的结束。
尝试这样的事情:
RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^([a-z-]+)/?$ /$1.php [QSA,NC,L]
注意:QSA
标志代表“查询字符串追加”,并将任何网址查询传递到相关页面。
HTH
编辑:对于包含小写字母以外的字符的URL,您应该更改范围组,使用不区分大小写的开关或根据其他人的示例使用(.*)
!
答案 1 :(得分:0)
您需要检查所请求的内容是否确实存在,否则您将遇到各种麻烦!试试这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php
至于你要问的第二件事,你显然需要在你的PHP代码中有一个查找功能来获取你所追求的项目的id。确保您实际上没有/communities
目录。
文档中有很多帮助:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
答案 2 :(得分:0)
请在此处查看我的回答:Rewrite all virtual subdomains to same folder using htaccess与您在此处尝试的内容非常相似。