我使用一个标准片段将对"myfile“的请求路由到"myfile.php",使用Apache:
# Add .php-extension to base URLS using rewrite (so links can omit it)
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
</IfModule>而且起作用了。当我在浏览器中输入"mydomain.com/myfile“时,我会看到页面加载,地址栏中没有".php”。太棒了。
但现在也很清楚,我仍然可以继续在原来的位置"mydomain.com/myfile.php“查看该页面。这有几个问题:
1) SEO:我正在稀释链接汁,将内容分成两个URLS,一个带有".php“,另一个没有。不重要,但是嘿..。
2)任何与世界各地网站的现有公共链接都将继续看到未修饰的URL。哎哟。
3)最重要的是,我现有的所有内部导航链接都将继续指向未修饰的URL。破碎机。
此时我的头开始旋转。我想我想要的是将非".PHP“版本重写为服务器上的”.PHP“,但也要将带有扩展的旧链接重定向到没有扩展的内容。有一个标准,“最佳实践”的方式绕过这个难题吗?应该通过我的导航,从链接中删除所有的".php“文件扩展名,从而一劳永逸地删除这些扩展名吗?看起来是错误的路径,但这是有可能发生的:)更严重的是,在灯堆栈中保存没有扩展名的PHP文件安全吗?(我甚至从来没有试过,太过条件反射,无法避免)。如何完成对漂亮URLS的转换?
提前感谢您的指导。
发布于 2013-04-02 17:42:49
短期
对于所有非漂亮链接,都有一个RewriteRule来重定向到与status=301 (永久重定向)对应的漂亮链接。这样,搜索引擎将开始缓存新的漂亮链接,同时逐渐放弃所有旧的非漂亮链接。以下是该部分的.htaccess内容:
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo with 301
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
## To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ /$1.php [L]长期
考虑使用漂亮链接转换内部非漂亮链接(删除\.php)。
https://stackoverflow.com/questions/15754625
复制相似问题