所以,我知道这里和互联网上有很多这个主题.但大多数文章/问题都是指"静态"网址重写,如:
www.site.com/products.aspx?category=Books
Run Code Online (Sandbox Code Playgroud)
所以他们把它改写成了
www.site.com/Products/Books
Run Code Online (Sandbox Code Playgroud)
没关系,但我需要别的东西.
该网站就像一个CMS,它有不同类型的内容.
现在,要阅读标题为"StackOverflow如何帮助您进行开发"的文章,您需要转到如下所示的URL.
www.site.com/viewContent.aspx?Id=1234
Run Code Online (Sandbox Code Playgroud)
我想要的是:
www.site.com/Content/Articles/how-to-stackoverflow-helps-you-in-your-development
Run Code Online (Sandbox Code Playgroud)
据我所知,我需要涉及ASP .NET,因为首先我需要检索文章(当然是它的标题),然后重写URL.
但我想知道如果我去那个网址,ASP .NET将如何知道如何获得该文章,它不包括任何地方的ID ...所以也许我可以接受类似的东西
www.site.com/Content/Articles/1234/how-to-stackoverflow-helps-you-in-your-development
Run Code Online (Sandbox Code Playgroud)
我有点迷失在这里..我从来没有做任何URL重写,我已经google了很多,我找不到办法做我想要的.也许我想要的不是叫url重写??? 我不知道...
该站点在Windows 2003 Server,IIS6,ASP .NET 3.5 SP1下运行当然,我需要一个免费的解决方案,不能在ISAPI mod上花费100usd(除了我不知道是否会做我需要的) .
感谢所有人,如果这是一个重复的问题,我很抱歉,但我找不到它.
编辑:我不需要支持nonASP.NET文件(jpgs,gifs等)不需要重写.我只需要重写viewContent页面,将内容标题包含在URL中.
twitter和facebook等如何制作独特的网址,例如.twitter.com/billgates
如果我想做同样的事情(给我的用户使用用户名的唯一网址),它是一个应用程序还是你为每个用户创建一个索引页面的目录?
顺便说一句,我使用coldfusion.
谢谢
目前,使用Kohana 3.1,我可以使用以下方式访问我的控制器:
HTTP://localhost/kohana/index.php/admin
但是,我想在中间没有"index.php"的情况下访问它们,如:
我怎样才能做到这一点?我是否需要更改.htaccess文件或某些配置选项?
我正在使用Kohana提供的.htaccess:
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
Order Deny,Allow
Deny From All
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT] 我是php的新手,mvc的新手,yii的新手,以及url-rewriting的新手.所以,对不起,如果我问一些非常基本的东西.
我隐藏了index.php(来自yii论坛中讨论的htaccess方法)
在我的urlmanager中,我有这个,
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>'
),
'showScriptName'=>false,
Run Code Online (Sandbox Code Playgroud)
我在view/site文件夹中有3个文件.
现在,我的主页应该重定向到"旅程"操作(即应该打开'site/journey.php')
所以,我猜,这将是
'/' => 'site/journey'
Run Code Online (Sandbox Code Playgroud)
它也有效.
现在,我希望'旅程/邀请'应该调用'邀请'动作,即应该打开'site/invite.php'
并且,'journey/linkedin'应该调用'linkedin'动作,即'site/linkedin.php'.
但,
'journey/invite' => 'site/invite',
'journey/linkedin' => 'site/linkedin'
Run Code Online (Sandbox Code Playgroud)
不管用.
此外,有人可以帮助我理解这一点,
<controller:\w+>/<id:\d+>
Run Code Online (Sandbox Code Playgroud)
即什么是url中的控制器以及'w +'是什么意思?
对指南的引用也会有所帮助.
在bool.dev的建议之后编辑:
改变了代码,如你所说(我之前也尝试过,删除所有默认规则).现在我的网址管理员就像,
'/' => 'site/journey',
'journey/invite' => 'site/invite',
'journey/linkedin' => 'site/linkedin',
'<controller:\w+>/<id:\d+>'=>'view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
Run Code Online (Sandbox Code Playgroud)
但它会引发错误
"警告:require_once():open_basedir限制有效.文件(/var/xyz.com /../ yii/framework/yii.php)不在允许的路径中:(/ usr/share/php:/usr/share/pear:/ usr/share/php/libzend-framework-php:/ var/* /tmp:/var/xyz.com)第12行/var/xyz.com/journey.php警告: require_once(/var/xyz.com /../ yii/framework/yii.php):无法打开流:第12行/var/xyz.com/journey.php中不允许操作致命错误:require_once():无法打开所需的'/var/xyz.com/../yii/framework/yii.php'(include_path ='.:/ usr/share/php:/ usr/share/php/libzend-framework-php')in第12行的/var/xyz.com/journey.php'
当我做xyz.com/journey/invite 甚至xyz.com/journey
编辑:
这是一个许可问题,@ bool.dev建议将具体规则放在最佳工作上:)
我正在通过跟随Egghead.io的视频来学习Angular.js.我在$ routeProvider视频,我的应用程序根本没有路由.
这是超基本的,这是脚本(app.js):
var app = angular.module('myApp', []);
// routes
app.config(function ($routeProvider) {
$routeProvider.when('/pizza', { template: 'Yum!!' });
});
app.controller('FirstCtrl', function ($scope) {
$scope.data = { message: "Hello" };
});
Run Code Online (Sandbox Code Playgroud)
和HTML:
<div ng-app="myApp">
<div ng-controller="FirstCtrl">
{{data.message + " world"}}
</div>
</div>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js"></script>
<script src="app.js"></script>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,http://host/#/pizza应该只显示"百胜!!" 因为我在模板中传递了一个字符串.它似乎没有做任何事情,我仍然得到"你好世界"的评价FirstCtrl.
为什么不在$routeProvider我的应用程序中做任何事情?
我在laravel 4修建路线时遇到了麻烦
我的routes.php是:http:
//paste.laravel.com/v92
当我点击我的网址中没有语言环境的主页时,它可以工作并转到Pagecontroller @ showHomepage.当我尝试使用我的网址中的区域设置(例如en或nl)来访问它时,它也可以工作并加载Pagecontroller @ showHomepage.
所以:/ - > works
/ nl - > works
/ en - >有效
管理组中的相同内容无法正常工作.如果我尝试访问没有语言环境的管理路由我得到一个浏览器错误,停止加载与重定向循环错误.但是,如果在网址中有区域设置,则确实有效.
所以:/ admin - >不起作用
/ nl/admin - > works
/ en/admin - >有效
我究竟做错了什么?我希望能够在没有语言环境的情况下转到管理页面(它加载默认语言环境)
用php artisan routes命令更新:http: //paste.laravel.com/v9w
第二个更新:它与我的公共文件夹中有一个管理员文件夹的事实有关,我把所有管理员相关的js,css和图像放在一起.不知道如何解决这个问题.
我希望这些URL都匹配相同的控制器:
/
/7
/articles
/articles/
/articles/7
Run Code Online (Sandbox Code Playgroud)
是否可以在prefixsymfony的路由中添加可选项,以便article前缀是可选的?
怎么样?
所以我使用的是Ember 1.5.1和Ember-data 1.0.0 beta7
我有以下路线
App.Router.map ->
@resource "items"
@resource 'item', path: '/items/:id
项目从服务器获取.如果我开始这条路线,这两条路线就可以正常工作; 奇怪的事情发生在我开始项目页面(/ items/1),然后我尝试导航到/ items /通过一个链接,其中的动作由ItemController中的函数this.transitionToRoute("items")处理.我收到以下错误:
尝试过渡到项目ember.js?body = 1:3524
转换#2:items:调用beforeModel hook ember.js?body = 1:3524
转换#2:items:调用deserialize hook ember.js?body = 1:3524
Error while loading route: Error: Cannot perform operations on a Metamorph that is not in the DOM.
at Metamorph.checkRemoved (http://localhost:3000/assets/ember.js?body=1:27009:15)
at Metamorph.html (http://localhost:3000/assets/ember.js?body=1:26979:12)
at Object.DOMManager.empty (http://localhost:3000/assets/ember.js?body=1:27974:16)
at Object.Ember.merge.empty (http://localhost:3000/assets/ember.js?body=1:25139:21)
at Ember.CollectionView.Ember.ContainerView.extend.arrayWillChange (http://localhost:3000/assets/ember.js?body=1:25962:25)
at Object.sendEvent (http://localhost:3000/assets/ember.js?body=1:2600:14)
at Ember.Array.Ember.Mixin.create.arrayContentWillChange (http://localhost:3000/assets/ember.js?body=1:15317:11)
at superFunction [as _super] (http://localhost:3000/assets/ember.js?body=1:7726:16)
at RecordArray.extend.arrayContentWillChange (http://localhost:3000/assets/ember-data.js?body=1:7624:28)
at superWrapper [as …Run Code Online (Sandbox Code Playgroud) 在Google App Engine with Go中,我想采用这样的网址:
http://www.example.com/api/account/123456/product/573832
Run Code Online (Sandbox Code Playgroud)
并像这样对待它:
http://www.example.com/api/account/{acctId}/product/{prodId}
Run Code Online (Sandbox Code Playgroud)
然后访问acctId并prodId在我的处理函数中.
我该怎么做呢?
如何从客户端的URL获取参数值,查看?
网址:
localhost:18652/category/1
Run Code Online (Sandbox Code Playgroud)
图路线:
routes.MapRoute(
name: "ResultsByCategory",
url: "category/{id}",
defaults: new { controller = "Home", action = "ResultsByCategory"}
);
Run Code Online (Sandbox Code Playgroud)
我如何获得身份证?
url-routing ×10
asp.net ×2
javascript ×2
angularjs ×1
asp.net-mvc ×1
c# ×1
coldfusion ×1
ember-data ×1
ember.js ×1
facebook ×1
go ×1
iis ×1
jquery ×1
kohana ×1
laravel ×1
laravel-4 ×1
php ×1
routing ×1
seo ×1
symfony ×1
twitter ×1
url ×1
yii ×1